diff -u --recursive --new-file v2.4.13/linux/CREDITS linux/CREDITS
--- v2.4.13/linux/CREDITS Tue Oct 23 22:48:49 2001
+++ linux/CREDITS Sun Nov 4 09:31:57 2001
@@ -1868,9 +1868,8 @@
S: Bulgaria
N: Martin Mares
-E: mj@suse.cz
E: mj@ucw.cz
-W: http://atrey.karlin.mff.cuni.cz/~mj/
+W: http://www.ucw.cz/~mj/
D: BIOS video mode handling code
D: MOXA C-218 serial board driver
D: Network autoconfiguration
diff -u --recursive --new-file v2.4.13/linux/Documentation/Configure.help linux/Documentation/Configure.help
--- v2.4.13/linux/Documentation/Configure.help Tue Oct 23 22:48:49 2001
+++ linux/Documentation/Configure.help Mon Nov 5 13:40:59 2001
@@ -1412,6 +1412,12 @@
have a high-level driver for the type of device that you want to
support.
+Shuttle EPAT c7/c8 extension
+CONFIG_PARIDE_EPATC8
+ This option enables support for the newer Shuttle EP1284 (aka c7 and
+ c8) chip. You need this if you are using any recent Imation SuperDisk
+ (LS-120) drive.
+
Shuttle EPIA protocol
CONFIG_PARIDE_EPIA
This option enables support for the (obsolete) EPIA parallel port
@@ -1934,6 +1940,20 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt. If unsure, say `N'.
+IRC Send/Chat support
+CONFIG_IP_NF_IRC
+ There is a commonly-used extension to IRC called
+ Direct Client-to-Client Protocol (DCC). This enables users to send
+ files to each other, and also chat to each other without the need
+ of a server. DCC Sending is used anywhere you send files over IRC,
+ and DCC Chat is most commonly used by Eggdrop bots. If you are
+ using NAT, this extension will enable you to send files and initiate
+ chats. Note that you do NOT need this extension to get files or
+ have others initiate chats, or everything else in IRC.
+
+ If you want to compile it as a module, say 'M' here and read
+ Documentation/modules.txt. If unsure, say 'N'.
+
FTP protocol support
CONFIG_IP_NF_FTP
Tracking FTP connections is problematic: special helpers are
@@ -1960,6 +1980,40 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt. If unsure, say `N'.
+CONFIG_IP6_NF_MATCH_LIMIT
+ limit matching allows you to control the rate at which a rule can be
+ matched: mainly useful in combination with the LOG target ("LOG
+ target support", below) and to avoid some Denial of Service attacks.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
+MAC address match support
+CONFIG_IP6_NF_MATCH_MAC
+ mac matching allows you to match packets based on the source
+ ethernet address of the packet.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
+Multiple port match support
+CONFIG_IP6_NF_MATCH_MULTIPORT
+ Multiport matching allows you to match TCP or UDP packets based on
+ a series of source or destination ports: normally a rule can only
+ match a single range of ports.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
+Owner match support (EXPERIMENTAL)
+CONFIG_IP6_NF_MATCH_OWNER
+ Packet owner matching allows you to match locally-generated packets
+ based on who created them: the user, group, process or session.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
+
limit match support
CONFIG_IP_NF_MATCH_LIMIT
@@ -1996,6 +2050,22 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt. If unsure, say `N'.
+TTL match support
+CONFIG_IP_NF_MATCH_TTL
+ This adds CONFIG_IP_NF_MATCH_TTL option, which enabled the user
+ to match packets by their TTL value.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
+length match support
+CONFIG_IP_NF_MATCH_LENGTH
+ This option allows you to match the length of a packet against a
+ specific value or range of values.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
TOS match support
CONFIG_IP_NF_MATCH_TOS
TOS matching allows you to match packets based on the Type Of
@@ -2075,6 +2145,20 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt. If unsure, say `N'.
+Basic SNMP-ALG support
+CONFIG_IP_NF_NAT_SNMP_BASIC
+
+ This module implements an Application Layer Gateway (ALG) for
+ SNMP payloads. In conjunction with NAT, it allows a network
+ management system to access multiple private networks with
+ conflicting addresses. It works by modifying IP addresses
+ inside SNMP payloads to match IP-layer NAT mapping.
+
+ This is the "basic" form of SNMP-ALG, as described in RFC 2962
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
REDIRECT target support
CONFIG_IP_NF_TARGET_REDIRECT
REDIRECT is a special case of NAT: all incoming connections are
@@ -2215,6 +2299,14 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt. If unsure, say `N'.
+LOG target support
+CONFIG_IP6_NF_TARGET_LOG
+ This option adds a `LOG' target, which allows you to create rules in
+ any ip6tables table which records the packet header to the syslog.
+
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. If unsure, say `N'.
+
Packet filtering
CONFIG_IP6_NF_FILTER
Packet filtering defines a table `filter', which has a series of
@@ -11142,7 +11234,7 @@
mice, joysticks, graphic tablets, or any other HID based devices
to your computer via USB. You can't use this driver and the
HIDBP (Boot Protocol) keyboard and mouse drivers at the same time.
- More information is available: Documentation/usb/input.txt.
+ More information is available: Documentation/input/input.txt.
If unsure, say Y.
@@ -12166,6 +12258,15 @@
http://www.unicode.org for more information). Say Y here if you want
to be able to read Joliet CDROMs under Linux.
+Transparent decompression extension
+CONFIG_ZISOFS
+ This is a Linux-specific extension to RockRidge which lets you store
+ data in compressed form on a CD-ROM and have it transparently
+ decompressed when the CD-ROM is accessed. See
+ for the tools
+ necessary to create such a filesystem. Say Y here if you want to be
+ able to read such compressed CD-ROMs.
+
UDF File System support (read only)
CONFIG_UDF_FS
This is the new file system used on some CDROMs and DVDs. Say Y if
@@ -14948,6 +15049,25 @@
http://www.buzzard.org.uk/toshiba/
Say Y if you intend to run this kernel on a Toshiba portable.
+ Say N otherwise.
+
+Dell Inspiron 8000 support
+CONFIG_I8K
+ This adds a driver to safely access the System Management Mode
+ of the CPU on the Dell Inspiron 8000. The System Management Mode
+ is used to read cpu temperature and cooling fan status and to
+ control the fans on the I8K portables.
+
+ This driver has been tested only on the Inspiron 8000 but it may
+ also work with other Dell laptops. You can force loading on other
+ models by passing the parameter `force=1' to the module. Use at
+ your own risk.
+
+ For information on utilities to make use of this driver see the
+ I8K Linux utilities web site at:
+ http://www.debian.org/~dz/i8k/
+
+ Say Y if you intend to run this kernel on a Dell Inspiron 8000.
Say N otherwise.
/dev/cpu/microcode - Intel IA32 CPU microcode support
diff -u --recursive --new-file v2.4.13/linux/Documentation/DocBook/Makefile linux/Documentation/DocBook/Makefile
--- v2.4.13/linux/Documentation/DocBook/Makefile Tue Oct 9 17:06:51 2001
+++ linux/Documentation/DocBook/Makefile Fri Nov 2 17:13:53 2001
@@ -8,7 +8,7 @@
HTML := $(patsubst %.sgml, %, $(BOOKS))
IMG-parportbook := parport-share.fig parport-multi.fig parport-structure.fig
EPS-parportbook := $(patsubst %.fig, %.eps, $(IMG-parportbook))
-JPG-parportbook := $(patsubst %.fig, %.jpeg, $(IMG-parportbook))
+PNG-parportbook := $(patsubst %.fig, %.png, $(IMG-parportbook))
C-procfs-example = procfs_example.sgml
books: $(BOOKS)
@@ -26,8 +26,8 @@
%.eps: %.fig
fig2dev -Leps $< $@
-%.jpeg: %.fig
- fig2dev -Ljpeg $< $@
+%.png: %.fig
+ fig2dev -Lpng $< $@
%.sgml: %.c
echo "" > $@
@@ -129,8 +129,8 @@
$(TOPDIR)/scripts/kernel-doc -man $^ | \
$(PERL) $(TOPDIR)/scripts/split-man $(TOPDIR)/Documentation/man
-parportbook: $(JPG-parportbook)
-parportbook.ps parportbook.pdf: $(EPS-parportbook)
+parportbook parportbook.pdf: $(PNG-parportbook)
+parportbook.ps: $(EPS-parportbook)
parportbook.sgml: parportbook.tmpl $(TOPDIR)/drivers/parport/init.c
$(TOPDIR)/scripts/docgen $(TOPDIR)/drivers/parport/init.c <$< >$@
@@ -144,7 +144,7 @@
rm -f core *~
rm -f $(BOOKS)
rm -f $(DVI) $(AUX) $(TEX) $(LOG) $(OUT)
- rm -f $(JPG-parportbook) $(EPS-parportbook)
+ rm -f $(PNG-parportbook) $(EPS-parportbook)
rm -f $(C-procfs-example)
mrproper: clean
@@ -172,7 +172,7 @@
exit 1)
rm -rf $@
db2html $<
- if [ ! -z "$(JPG-$@)" ]; then cp $(JPG-$@) $@; fi
+ if [ ! -z "$(PNG-$@)" ]; then cp $(PNG-$@) $@; fi
#
# we could have our own dependency generator
diff -u --recursive --new-file v2.4.13/linux/Documentation/DocBook/parportbook.tmpl linux/Documentation/DocBook/parportbook.tmpl
--- v2.4.13/linux/Documentation/DocBook/parportbook.tmpl Sun Sep 23 11:40:54 2001
+++ linux/Documentation/DocBook/parportbook.tmpl Thu Oct 25 00:07:40 2001
@@ -1,5 +1,5 @@
-
+
@@ -184,10 +184,10 @@
-
+
-
+
@@ -270,10 +270,10 @@
-
+
-
+
@@ -461,10 +461,10 @@
-
+
-
+
diff -u --recursive --new-file v2.4.13/linux/Documentation/arm/SA1100/Assabet linux/Documentation/arm/SA1100/Assabet
--- v2.4.13/linux/Documentation/arm/SA1100/Assabet Tue Oct 9 17:06:51 2001
+++ linux/Documentation/arm/SA1100/Assabet Thu Oct 25 13:53:44 2001
@@ -245,32 +245,58 @@
June 12, 2001
-Status of peripherals in -rmk tree
-----------------------------------
+Status of peripherals in -rmk tree (updated 14/10/2001)
+-------------------------------------------------------
Assabet:
Serial ports:
- Radio: TX, RX, CTS, DSR, DCD, RI
- COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM
- I2C: TX, RX
- L3: No
+ Radio: TX, RX, CTS, DSR, DCD, RI
+ PM: Not tested.
+ COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM
+ PM: Not tested.
+ I2C: Implemented, not fully tested.
+ L3: Fully tested, pass.
+ PM: Not tested.
Video:
- LCD: PM
- Video out: Not fully
- Touchscreen: No
+ LCD: Fully tested. PM
+ (LCD doesn't like being blanked with
+ neponset connected)
+ Video out: Not fully
Audio:
- Codec: No
- POTS: No
+ UDA1341:
+ Playback: Fully tested, pass.
+ Record: Implemented, not tested.
+ PM: Not tested.
+
+ UCB1200:
+ Audio play: Implemented, not heavily tested.
+ Audio rec: Implemented, not heavily tested.
+ Telco audio play: Implemented, not heavily tested.
+ Telco audio rec: Implemented, not heavily tested.
+ POTS control: No
+ Touchscreen: Yes
+ PM: Not tested.
Other:
- PCMCIA: Yes
- USB: No
+ PCMCIA:
+ LPE: Fully tested, pass.
+ USB: No
+ IRDA:
+ SIR: Fully tested, pass.
+ FIR: Fully tested, pass.
+ PM: Not tested.
Neponset:
Serial ports:
COM1,2: TX, RX, CTS, DSR, DCD, RTS, DTR
+ PM: Not tested.
+ USB: Implemented, not heavily tested.
+ PCMCIA: Implemented, not heavily tested.
+ PM: Not tested.
+ CF: Implemented, not heavily tested.
+ PM: Not tested.
More stuff can be found in the -np (Nicolas Pitre's) tree.
diff -u --recursive --new-file v2.4.13/linux/Documentation/computone.txt linux/Documentation/computone.txt
--- v2.4.13/linux/Documentation/computone.txt Fri Jul 28 12:50:51 2000
+++ linux/Documentation/computone.txt Fri Nov 2 17:26:17 2001
@@ -4,16 +4,14 @@
Release Notes For Linux Kernel 2.2 and higher.
These notes are for the drivers which have already been integrated into the
-kernel and have been tested on Linux kernels 2.0, 2.2, and 2.3.
+kernel and have been tested on Linux kernels 2.0, 2.2, 2.3, and 2.4.
-Version: 1.2.9
-Date: 04/12/2000
-Author: Andrew Manison
-Testing: larryg@computone.com
+Version: 1.2.14
+Date: 11/01/2001
+Historical Author: Andrew Manison
+Primary Author: Doug McNash
Support: support@computone.com
-Fixes and Updates: Doug McNash
-Proc Filesystem and Kernel Integration: Mike Warfield
-
+Fixes and Updates: Mike Warfield
This file assumes that you are using the Computone drivers which are
integrated into the kernel sources. For updating the drivers or installing
@@ -28,7 +26,7 @@
products previous to the Intelliport II.
This driver was developed on the v2.0.x Linux tree and has been tested up
-to v2.2.14; it will probably not work with earlier v1.X kernels,.
+to v2.4.14; it will probably not work with earlier v1.X kernels,.
2. QUICK INSTALLATION
@@ -42,7 +40,7 @@
before or after drivers installation.
Note the hardware address from the Computone ISA cards installed into
- the system. These are required for editing ip2.h or editing
+ the system. These are required for editing ip2.c or editing
/etc/modules.conf, or for specification on the modprobe
command line.
@@ -58,7 +56,7 @@
Select (m) module for CONFIG_COMPUTONE under character
devices. CONFIG_PCI and CONFIG_MODULES also may need to be set.
c) Set address on ISA cards then:
- edit /usr/src/linux/drivers/char/ip2/ip2.h if needed
+ edit /usr/src/linux/drivers/char/ip2.c if needed
or
edit /etc/modules.conf if needed (module).
or both to match this setting.
@@ -77,7 +75,8 @@
Select (y) kernel for CONFIG_COMPUTONE under character
devices. CONFIG_PCI may need to be set if you have PCI bus.
c) Set address on ISA cards then:
- edit /usr/src/linux/drivers/char/ip2/ip2.h
+ edit /usr/src/linux/drivers/char/ip2.c
+ (Optional - may be specified on kernel command line now)
d) Run "make dep"
e) Run "make zImage" or whatever target you prefer.
f) mv /usr/src/linux/arch/i386/boot/zImage to /boot.
@@ -86,6 +85,41 @@
h) Reboot using this kernel
i) run ip2mkdev (either the script below or the binary version)
+Kernel command line options:
+
+When compiling the driver into the kernel, io and irq may be
+compiled into the driver by editing ip2.c and setting the values for
+io and irq in the appropriate array. An alternative is to specify
+a command line parameter to the kernel at boot up.
+
+ ip2=io0,irq0,io1,irq1,io2,irq2,io3,irq3
+
+Note that this order is very different from the specifications for the
+modload parameters which have separate IRQ and IO specifiers.
+
+The io port also selects PCI (1) and EISA (2) boards.
+
+ io=0 No board
+ io=1 PCI board
+ io=2 EISA board
+ else ISA board io address
+
+You only need to specify the boards which are present.
+
+ Examples:
+
+ 2 PCI boards:
+
+ ip2=1,0,1,0
+
+ 1 ISA board at 0x310 irq 5:
+
+ ip2=0x310,5
+
+This can be added to and "append" option in lilo.conf similar to this:
+
+ append="ip2=1,0,1,0"
+
3. INSTALLATION
@@ -100,7 +134,7 @@
The driver can be installed as a module (recommended) or built into the
kernel. This is selected as for other drivers through the `make config`
command from the root of the Linux source tree. If the driver is built
-into the kernel you will need to edit the file ip2.h to match the boards
+into the kernel you will need to edit the file ip2.c to match the boards
you are installing. See that file for instructions. If the driver is
installed as a module the configuration can also be specified on the
modprobe command line as follows:
@@ -109,13 +143,13 @@
where irqnum is one of the valid Intelliport II interrupts (3,4,5,7,10,11,
12,15) and addr1-4 are the base addresses for up to four controllers. If
-the irqs are not specified the driver uses the default in ip2/ip2.h (which
+the irqs are not specified the driver uses the default in ip2.c (which
selects polled mode). If no base addresses are specified the defaults in
-ip2.h are used. If you are autoloading the driver module with kerneld or
-kmod the base addresses and interrupt number must also be set in ip2/ip2.h
+ip2.c are used. If you are autoloading the driver module with kerneld or
+kmod the base addresses and interrupt number must also be set in ip2.c
and recompile or just insert and options line in /etc/modules.conf or both.
The options line is equivalent to the command line and takes precidence over
-what is in ip2.h.
+what is in ip2.c.
/etc/modules.conf sample:
options ip2 io=1,0x328 irq=1,10
@@ -123,22 +157,18 @@
alias char-major-72 ip2
alias char-major-73 ip2
-equivelant ip2.h:
-static ip2config_t ip2config =
-{
- {1,10,0,0},
- {
- 0x0001, // Board 0, ttyF0 - ttyF63 /* PCI card */
- 0x0328, // Board 1, ttyF64 - ttyF127 /* ISA card */
- 0x0000, // Board 2, ttyF128 - ttyF191 /* empty */
- 0x0000 // Board 3, ttyF192 - ttyF255 /* empty */
- }
-};
+The equivalent in ip2.c:
+
+static int io[IP2_MAX_BOARDS]= { 1, 0x328, 0, 0 };
+static int irq[IP2_MAX_BOARDS] = { 1, 10, -1, -1 };
+
+The equivalent for the kernel command line (in lilo.conf):
+
+ append="ip2=1,1,0x328,10"
Note: Both io and irq should be updated to reflect YOUR system. An "io"
- address of "1/2" indicates a PCI/EISA card in the board table. The
- PCI or EISA irq will be assigned automatically.
+ address of 1 or 2 indicates a PCI or EISA card in the board table. The PCI or EISA irq will be assigned automatically.
Specifying an invalid or in-use irq will default the driver into
running in polled mode for that card. If all irq entries are 0 then
@@ -162,18 +192,26 @@
cuf0 - cuf255 for callout devices.
If you are using devfs, existing devices are automatically created within
-the devfs name space. Normal devices will be ttf/0 - ttf/255 and callout
-devices will be cuf/0 - cuf/255. With devfs installed, ip2mkdev will
+the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout
+devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will
create symbolic links in /dev from the old conventional names to the newer
devfs names as follows:
/dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3
/dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3
- /dev/ttyF[n] -> /dev/ttf/[n] n = 0 - 255
- /dev/cuf[n] -> /dev/cuf/[n] n = 0 - 255
+ /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255
+ /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255
Only devices for existing ports and boards will be created.
+IMPORTANT NOTE: The naming convention used for devfs by this driver
+was changed from 1.2.12 to 1.2.13. The old naming convention was to
+use ttf/%d for the tty device and cuf/%d for the cua device. That
+has been changed to conform to an agreed-upon standard of placing
+all the tty devices under tts. The device names are now tts/F%d for
+the tty device and cua/F%d for the cua devices. If you were using
+the older devfs names, you must update for the newer convention.
+
You do not need to run ip2mkdev if you are using devfs and only want to
use the devfs native device names.
@@ -229,18 +267,26 @@
documentation files, .../linux/Documentation/filesystems/devfs/REAME.
If you are using devfs, existing devices are automatically created within
-the devfs name space. Normal devices will be ttf/0 - ttf/255 and callout
-devices will be cuf/0 - cuf/255. With devfs installed, ip2mkdev will
+the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout
+devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will
create symbolic links in /dev from the old conventional names to the newer
devfs names as follows:
/dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3
/dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3
- /dev/ttyF[n] -> /dev/ttf/[n] n = 0 - 255
- /dev/cuf[n] -> /dev/cuf/[n] n = 0 - 255
+ /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255
+ /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255
Only devices for existing ports and boards will be created.
+IMPORTANT NOTE: The naming convention used for devfs by this driver
+was changed from 1.2.12 to 1.2.13. The old naming convention was to
+use ttf/%d for the tty device and cuf/%d for the cua device. That
+has been changed to conform to an agreed-upon standard of placing
+all the tty devices under tts. The device names are now tts/F%d for
+the tty device and cua/F%d for the cua devices. If you were using
+the older devfs names, you must update for the newer convention.
+
You do not need to run ip2mkdev if you are using devfs and only want to
use the devfs native device names.
@@ -269,19 +315,19 @@
#!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
+# This is a shell archive (produced by GNU sharutils 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
-# Made on 2000-03-10 11:55 EST by .
-# Source directory was `/mnt1/src/linux-2.3.50c/Documentation'.
+# Made on 2001-10-29 10:32 EST by .
+# Source directory was `/home2/src/tmp'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
-# 4061 -rwxr-xr-x ip2mkdev
+# 4251 -rwxr-xr-x ip2mkdev
#
save_IFS="${IFS}"
IFS="${IFS}:"
@@ -316,9 +362,12 @@
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
-touch -am 1231235999 $$.touch >/dev/null 2>&1
-if test ! -f 1231235999 && test -f $$.touch; then
- shar_touch=touch
+if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then
+ shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
+elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then
+ shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
+elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then
+ shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
@@ -326,9 +375,9 @@
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
-rm -f 1231235999 $$.touch
+rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch
#
-if mkdir _sh17088; then
+if mkdir _sh17581; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
@@ -356,11 +405,14 @@
# before running this script. Running this script will then recreate
# all the valid devices.
#
-# =mhw=
# Michael H. Warfield
+# /\/\|=mhw=|\/\/
# mhw@wittsend.com
#
-# Updated 03/09/2000 for devfs support in ip2 drivers. =mhw=
+# Updated 10/29/2000 for version 1.2.13 naming convention
+# under devfs. /\/\|=mhw=|\/\/
+#
+# Updated 03/09/2000 for devfs support in ip2 drivers. /\/\|=mhw=|\/\/
#
X
if test -d /dev/ip2 ; then
@@ -375,18 +427,19 @@
X ln -s ip2/$i ip2$i
X fi
X done
-X for i in `ls ttf` ; do
-X if test ! -L ttyF$i ; then
+X for i in `( cd tts ; ls F* )` ; do
+X if test ! -L tty$i ; then
X # Remove it incase it wasn't a symlink (old device)
-X rm -f ttyF$i
-X ln -s ttyf/$i ttyF$i
+X rm -f tty$i
+X ln -s tts/$i tty$i
X fi
X done
-X for i in `ls cuf` ; do
-X if test ! -L cuf$i ; then
+X for i in `( cd cua ; ls F* )` ; do
+X DEVNUMBER=`expr $i : 'F\(.*\)'`
+X if test ! -L cuf$DEVNUMBER ; then
X # Remove it incase it wasn't a symlink (old device)
-X rm -f cuf$i
-X ln -s cuf/$i cuf$i
+X rm -f cuf$DEVNUMBER
+X ln -s cua/$i cuf$DEVNUMBER
X fi
X done
X exit 0
@@ -508,20 +561,20 @@
X
Xexit 0
SHAR_EOF
- $shar_touch -am 03101153100 'ip2mkdev' &&
+ (set 20 01 10 29 10 32 01 'ip2mkdev'; eval "$shar_touch") &&
chmod 0755 'ip2mkdev' ||
$echo 'restore of' 'ip2mkdev' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'ip2mkdev:' 'MD5 check failed'
-b0671abeba07b0a9266b70aaf24509b3 ip2mkdev
+cb5717134509f38bad9fde6b1f79b4a4 ip2mkdev
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'ip2mkdev'`"
- test 4061 -eq "$shar_count" ||
- $echo 'ip2mkdev:' 'original size' '4061,' 'current size' "$shar_count!"
+ test 4251 -eq "$shar_count" ||
+ $echo 'ip2mkdev:' 'original size' '4251,' 'current size' "$shar_count!"
fi
fi
-rm -fr _sh17088
+rm -fr _sh17581
exit 0
diff -u --recursive --new-file v2.4.13/linux/Documentation/filesystems/devfs/ChangeLog linux/Documentation/filesystems/devfs/ChangeLog
--- v2.4.13/linux/Documentation/filesystems/devfs/ChangeLog Thu Oct 11 08:02:26 2001
+++ linux/Documentation/filesystems/devfs/ChangeLog Sat Nov 3 10:06:38 2001
@@ -1771,3 +1771,10 @@
- Fixed buffer underrun in
- Moved down_read() from to
+===============================================================================
+Changes for patch v196
+
+- Fixed race in when setting event mask
+ Thanks to Kari Hurtta
+
+- Avoid deadlock in by using temporary buffer
diff -u --recursive --new-file v2.4.13/linux/Documentation/filesystems/vfat.txt linux/Documentation/filesystems/vfat.txt
--- v2.4.13/linux/Documentation/filesystems/vfat.txt Wed Apr 11 19:02:27 2001
+++ linux/Documentation/filesystems/vfat.txt Thu Oct 25 13:53:44 2001
@@ -48,8 +48,15 @@
r: relaxed, case insensitive
n: normal, default setting, currently case insensitive
-nocase -- Returning with having the 8.3 format alias kept in
- the disk. Default, return lowercase letter.
+shortname=lower|win95|winnt|mixed
+ -- Shortname display/create setting.
+ lower: convert to lowercase for display,
+ emulate the Windows 95 rule for create.
+ win95: emulate the Windows 95 rule for display/create.
+ winnt: emulate the Windows NT rule for display/create.
+ mixed: emulate the Windows NT rule for display,
+ emulate the Windows 95 rule for create.
+ Default setting is `lower'.
: 0,1,yes,no,true,false
diff -u --recursive --new-file v2.4.13/linux/Documentation/networking/8139too.txt linux/Documentation/networking/8139too.txt
--- v2.4.13/linux/Documentation/networking/8139too.txt Tue Oct 23 22:48:49 2001
+++ linux/Documentation/networking/8139too.txt Thu Oct 25 14:01:51 2001
@@ -17,9 +17,6 @@
Disclaimer
----------
-THIS DRIVER IS A DEVELOPMENT RELEASE FOR A DEVELOPMENT KERNEL. DO NOT
-USE IN A PRODUCTION ENVIRONMENT.
-
DO NOT CONTACT DONALD BECKER FOR SUPPORT OF THIS DRIVER, his driver is
completely different and maintained independently of the 8139too code base.
@@ -95,6 +92,7 @@
Tested Adapters
---------------
AOpen ALN-325C
+AT-2500TX 10/100 PCI Fast Ethernet Network Adapter Card
KTI KF-230TX
KTI KF-230TX/2
Lantech FastNet TX
diff -u --recursive --new-file v2.4.13/linux/Documentation/pci.txt linux/Documentation/pci.txt
--- v2.4.13/linux/Documentation/pci.txt Sun Aug 12 13:27:58 2001
+++ linux/Documentation/pci.txt Sun Nov 4 09:31:57 2001
@@ -1,6 +1,6 @@
How To Write Linux PCI Drivers
- by Martin Mares on 07-Feb-2000
+ by Martin Mares on 07-Feb-2000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The world of PCI is vast and it's full of (mostly unpleasant) surprises.
diff -u --recursive --new-file v2.4.13/linux/MAINTAINERS linux/MAINTAINERS
--- v2.4.13/linux/MAINTAINERS Tue Oct 23 22:48:49 2001
+++ linux/MAINTAINERS Sun Nov 4 09:31:58 2001
@@ -93,7 +93,12 @@
L: linux-hams@vger.kernel.org
S: Maintained
-8139TOO ETHERNET DRIVER
+8139CP 10/100 FAST ETHERNET DRIVER
+P: Jeff Garzik
+M: jgarzik@mandrakesoft.com
+S: Maintained
+
+8139TOO 10/100 FAST ETHERNET DRIVER
P: Jeff Garzik
M: jgarzik@mandrakesoft.com
W: http://sourceforge.net/projects/gkernel/
@@ -296,9 +301,7 @@
S: Supported
COMPUTONE INTELLIPORT MULTIPORT CARD
-P: Doug McNash
P: Michael H. Warfield
-M: Doug McNash
M: Michael H. Warfield
W: http://www.computone.com/
W: http://www.wittsend.com/computone.html
@@ -642,6 +645,13 @@
L: Linux-Kernel@vger.kernel.org
S: Maintained
+i386 SETUP CODE / CPU ERRATA WORKAROUNDS
+P: Dave Jones
+M: davej@suse.de
+P: H. Peter Anvin
+M: hpa@zytor.com
+S: Maintained
+
i810 TCO TIMER WATCHDOG
P: Nils Faerber
M: nils@kernelconcepts.de
@@ -1141,9 +1151,9 @@
PCI SUBSYSTEM
P: Martin Mares
-M: mj@suse.cz
+M: mj@ucw.cz
L: linux-kernel@vger.kernel.org
-S: Supported
+S: Odd Fixes
PCMCIA SUBSYSTEM
P: David Hinds
@@ -1391,7 +1401,7 @@
SVGA HANDLING
P: Martin Mares
-M: mj@suse.cz
+M: mj@ucw.cz
L: linux-video@atrey.karlin.mff.cuni.cz
S: Maintained
diff -u --recursive --new-file v2.4.13/linux/Makefile linux/Makefile
--- v2.4.13/linux/Makefile Tue Oct 23 22:48:49 2001
+++ linux/Makefile Mon Nov 5 12:30:48 2001
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 4
-SUBLEVEL = 13
+SUBLEVEL = 14
EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/config.in linux/arch/alpha/config.in
--- v2.4.13/linux/arch/alpha/config.in Tue Oct 9 17:06:51 2001
+++ linux/arch/alpha/config.in Mon Nov 5 09:47:41 2001
@@ -217,6 +217,10 @@
bool 'Symmetric multi-processing support' CONFIG_SMP
fi
+if [ "$CONFIG_SMP" = "y" ]; then
+ define_bool CONFIG_HAVE_DEC_LOCK y
+fi
+
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
bool 'Discontiguous Memory Support' CONFIG_DISCONTIGMEM
if [ "$CONFIG_DISCONTIGMEM" = "y" ]; then
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/alpha_ksyms.c linux/arch/alpha/kernel/alpha_ksyms.c
--- v2.4.13/linux/arch/alpha/kernel/alpha_ksyms.c Tue Oct 23 22:48:49 2001
+++ linux/arch/alpha/kernel/alpha_ksyms.c Mon Nov 5 09:47:41 2001
@@ -221,6 +221,7 @@
EXPORT_SYMBOL(__global_sti);
EXPORT_SYMBOL(__global_save_flags);
EXPORT_SYMBOL(__global_restore_flags);
+EXPORT_SYMBOL(atomic_dec_and_lock);
#if DEBUG_SPINLOCK
EXPORT_SYMBOL(spin_unlock);
EXPORT_SYMBOL(debug_spin_lock);
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/osf_sys.c linux/arch/alpha/kernel/osf_sys.c
--- v2.4.13/linux/arch/alpha/kernel/osf_sys.c Mon Aug 27 12:41:37 2001
+++ linux/arch/alpha/kernel/osf_sys.c Fri Nov 2 17:39:20 2001
@@ -1320,3 +1320,67 @@
return ret;
}
+
+/* Get an address range which is currently unmapped. Similar to the
+ generic version except that we know how to honor ADDR_LIMIT_32BIT. */
+
+static unsigned long
+arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
+ unsigned long limit)
+{
+ struct vm_area_struct *vma = find_vma(current->mm, addr);
+
+ while (1) {
+ /* At this point: (!vma || addr < vma->vm_end). */
+ if (limit - len < addr)
+ return -ENOMEM;
+ if (!vma || addr + len <= vma->vm_start)
+ return addr;
+ addr = vma->vm_end;
+ vma = vma->vm_next;
+ }
+}
+
+unsigned long
+arch_get_unmapped_area(struct file *filp, unsigned long addr,
+ unsigned long len, unsigned long pgoff,
+ unsigned long flags)
+{
+ unsigned long limit;
+
+ /* "32 bit" actually means 31 bit, since pointers sign extend. */
+ if (current->personality & ADDR_LIMIT_32BIT)
+ limit = 0x80000000;
+ else
+ limit = TASK_SIZE;
+
+ if (len > limit)
+ return -ENOMEM;
+
+ /* First, see if the given suggestion fits.
+
+ The OSF/1 loader (/sbin/loader) relies on us returning an
+ address larger than the requested if one exists, which is
+ a terribly broken way to program.
+
+ That said, I can see the use in being able to suggest not
+ merely specific addresses, but regions of memory -- perhaps
+ this feature should be incorporated into all ports? */
+
+ if (addr) {
+ addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
+ if (addr != -ENOMEM)
+ return addr;
+ }
+
+ /* Next, try allocating at TASK_UNMAPPED_BASE. */
+ addr = arch_get_unmapped_area_1 (PAGE_ALIGN(TASK_UNMAPPED_BASE),
+ len, limit);
+ if (addr != -ENOMEM)
+ return addr;
+
+ /* Finally, try allocating in low memory. */
+ addr = arch_get_unmapped_area_1 (PAGE_SIZE, len, limit);
+
+ return addr;
+}
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/pci.c linux/arch/alpha/kernel/pci.c
--- v2.4.13/linux/arch/alpha/kernel/pci.c Tue Oct 23 22:48:49 2001
+++ linux/arch/alpha/kernel/pci.c Fri Nov 2 17:39:20 2001
@@ -93,16 +93,18 @@
/* The Cypress bridge responds on the PCI bus in the address range
0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no
- way to turn this off, so if we use a large direct-map window, or
- a large SG window, we must avoid this region. */
+ way to turn this off. The bridge also supports several extended
+ BIOS ranges (disabled after power-up), and some consoles do turn
+ them on. So if we use a large direct-map window, or a large SG
+ window, we must avoid entire 0xfff00000-0xffffffff region. */
else if (dev->class >> 8 == PCI_CLASS_BRIDGE_ISA) {
- if (__direct_map_base + __direct_map_size >= 0xffff0000)
- __direct_map_size = 0xffff0000 - __direct_map_base;
+ if (__direct_map_base + __direct_map_size >= 0xfff00000)
+ __direct_map_size = 0xfff00000 - __direct_map_base;
else {
struct pci_controller *hose = dev->sysdata;
struct pci_iommu_arena *pci = hose->sg_pci;
- if (pci && pci->dma_base + pci->size >= 0xffff0000)
- pci->size = 0xffff0000 - pci->dma_base;
+ if (pci && pci->dma_base + pci->size >= 0xfff00000)
+ pci->size = 0xfff00000 - pci->dma_base;
}
}
}
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/pci_iommu.c linux/arch/alpha/kernel/pci_iommu.c
--- v2.4.13/linux/arch/alpha/kernel/pci_iommu.c Tue Oct 23 22:48:49 2001
+++ linux/arch/alpha/kernel/pci_iommu.c Mon Nov 5 09:47:41 2001
@@ -250,7 +250,7 @@
if (dir == PCI_DMA_NONE)
BUG();
return pci_map_single_1(pdev, cpu_addr, size,
- (pdev->dma_mask >> 32) != 0);
+ pdev ? (pdev->dma_mask >> 32) != 0 : 0);
}
dma_addr_t
@@ -260,7 +260,7 @@
if (dir == PCI_DMA_NONE)
BUG();
return pci_map_single_1(pdev, (char *)page_address(page) + offset,
- size, (pdev->dma_mask >> 32) != 0);
+ size, pdev ? (pdev->dma_mask >> 32) != 0 : 0);
}
/* Unmap a single streaming mode DMA translation. The DMA_ADDR and
@@ -304,7 +304,7 @@
dma_ofs = (dma_addr - arena->dma_base) >> PAGE_SHIFT;
if (dma_ofs * PAGE_SIZE >= arena->size) {
printk(KERN_ERR "Bogus pci_unmap_single: dma_addr %lx "
- " base %x size %x\n", dma_addr, arena->dma_base,
+ " base %lx size %x\n", dma_addr, arena->dma_base,
arena->size);
return;
BUG();
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/setup.c linux/arch/alpha/kernel/setup.c
--- v2.4.13/linux/arch/alpha/kernel/setup.c Tue Oct 9 17:06:51 2001
+++ linux/arch/alpha/kernel/setup.c Fri Nov 2 17:39:20 2001
@@ -1054,7 +1054,8 @@
static char cpu_names[][8] = {
"EV3", "EV4", "Simulate", "LCA4", "EV5", "EV45", "EV56",
- "EV6", "PCA56", "PCA57", "EV67", "EV68CB", "EV68AL"
+ "EV6", "PCA56", "PCA57", "EV67", "EV68CB", "EV68AL",
+ "EV68CX", "EV7", "EV79", "EV69"
};
struct percpu_struct *cpu;
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/time.c linux/arch/alpha/kernel/time.c
--- v2.4.13/linux/arch/alpha/kernel/time.c Tue Oct 9 17:06:51 2001
+++ linux/arch/alpha/kernel/time.c Fri Nov 2 17:39:20 2001
@@ -169,6 +169,63 @@
init_rtc_irq();
}
+
+/* Validate a computed cycle counter result against the known bounds for
+ the given processor core. There's too much brokenness in the way of
+ timing hardware for any one method to work everywhere. :-(
+
+ Return 0 if the result cannot be trusted, otherwise return the argument. */
+
+static unsigned long __init
+validate_cc_value(unsigned long cc)
+{
+ static struct bounds {
+ unsigned int min, max;
+ } cpu_hz[] __initdata = {
+ [EV3_CPU] = { 50000000, 200000000 }, /* guess */
+ [EV4_CPU] = { 150000000, 300000000 },
+ [LCA4_CPU] = { 150000000, 300000000 }, /* guess */
+ [EV45_CPU] = { 200000000, 300000000 },
+ [EV5_CPU] = { 266000000, 333333333 },
+ [EV56_CPU] = { 366000000, 667000000 },
+ [PCA56_CPU] = { 400000000, 600000000 }, /* guess */
+ [PCA57_CPU] = { 500000000, 600000000 }, /* guess */
+ [EV6_CPU] = { 466000000, 600000000 },
+ [EV67_CPU] = { 600000000, 750000000 },
+ [EV68AL_CPU] = { 750000000, 940000000 },
+ [EV68CB_CPU] = { 1000000000, 1333333333 },
+ /* None of the following are shipping as of 2001-11-01. */
+ [EV68CX_CPU] = { 1000000000, 1700000000 }, /* guess */
+ [EV69_CPU] = { 1000000000, 1700000000 }, /* guess */
+ [EV7_CPU] = { 800000000, 1400000000 }, /* guess */
+ [EV79_CPU] = { 1000000000, 2000000000 }, /* guess */
+ };
+
+ /* Allow for some drift in the crystal. 10MHz is more than enough. */
+ const unsigned int deviation = 10000000;
+
+ struct percpu_struct *cpu;
+ unsigned int index;
+
+ cpu = (struct percpu_struct *)((char*)hwrpb + hwrpb->processor_offset);
+ index = cpu->type & 0xffffffff;
+
+ /* If index out of bounds, no way to validate. */
+ if (index >= sizeof(cpu_hz)/sizeof(cpu_hz[0]))
+ return cc;
+
+ /* If index contains no data, no way to validate. */
+ if (cpu_hz[index].max == 0)
+ return cc;
+
+ if (cc < cpu_hz[index].min - deviation
+ || cc > cpu_hz[index].max + deviation)
+ return 0;
+
+ return cc;
+}
+
+
/*
* Calibrate CPU clock using legacy 8254 timer/counter. Stolen from
* arch/i386/time.c.
@@ -180,8 +237,7 @@
static unsigned long __init
calibrate_cc_with_pic(void)
{
- int cc;
- unsigned long count = 0;
+ int cc, count = 0;
/* Set the Gate high, disable speaker */
outb((inb(0x61) & ~0x02) | 0x01, 0x61);
@@ -200,30 +256,18 @@
cc = rpcc();
do {
count++;
- } while ((inb(0x61) & 0x20) == 0);
+ } while ((inb(0x61) & 0x20) == 0 && count > 0);
cc = rpcc() - cc;
- /* Error: ECTCNEVERSET */
+ /* Error: ECTCNEVERSET or ECPUTOOFAST. */
if (count <= 1)
- goto bad_ctc;
+ return 0;
- /* Error: ECPUTOOFAST */
- if (count >> 32)
- goto bad_ctc;
-
- /* Error: ECPUTOOSLOW */
+ /* Error: ECPUTOOSLOW. */
if (cc <= CALIBRATE_TIME)
- goto bad_ctc;
-
- return ((long)cc * 1000000) / CALIBRATE_TIME;
+ return 0;
- /*
- * The CTC wasn't reliable: we got a hit on the very first read,
- * or the CPU was so fast/slow that the quotient wouldn't fit in
- * 32 bits..
- */
- bad_ctc:
- return 0;
+ return (cc * 1000000UL) / CALIBRATE_TIME;
}
/* The Linux interpretation of the CMOS clock register contents:
@@ -249,31 +293,35 @@
/* Calibrate CPU clock -- attempt #1. */
if (!est_cycle_freq)
- est_cycle_freq = calibrate_cc_with_pic();
+ est_cycle_freq = validate_cc_value(calibrate_cc_with_pic());
cc1 = rpcc_after_update_in_progress();
/* Calibrate CPU clock -- attempt #2. */
if (!est_cycle_freq) {
cc2 = rpcc_after_update_in_progress();
- est_cycle_freq = cc2 - cc1;
+ est_cycle_freq = validate_cc_value(cc2 - cc1);
cc1 = cc2;
}
- /* If the given value is within 1% of what we calculated,
- accept it. Otherwise, use what we found. */
cycle_freq = hwrpb->cycle_freq;
- one_percent = cycle_freq / 100;
- diff = cycle_freq - est_cycle_freq;
- if (diff < 0)
- diff = -diff;
- if (diff > one_percent) {
- cycle_freq = est_cycle_freq;
- printk("HWRPB cycle frequency bogus. Estimated %lu Hz\n",
- cycle_freq);
- }
- else {
- est_cycle_freq = 0;
+ if (est_cycle_freq) {
+ /* If the given value is within 1% of what we calculated,
+ accept it. Otherwise, use what we found. */
+ one_percent = cycle_freq / 100;
+ diff = cycle_freq - est_cycle_freq;
+ if (diff < 0)
+ diff = -diff;
+ if (diff > one_percent) {
+ cycle_freq = est_cycle_freq;
+ printk("HWRPB cycle frequency bogus. "
+ "Estimated %lu Hz\n", cycle_freq);
+ } else {
+ est_cycle_freq = 0;
+ }
+ } else if (! validate_cc_value (cycle_freq)) {
+ printk("HWRPB cycle frequency bogus, "
+ "and unable to estimate a proper value!\n");
}
/* From John Bowman : allow the values
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/kernel/traps.c linux/arch/alpha/kernel/traps.c
--- v2.4.13/linux/arch/alpha/kernel/traps.c Tue Oct 9 17:06:51 2001
+++ linux/arch/alpha/kernel/traps.c Mon Nov 5 09:47:41 2001
@@ -295,9 +295,13 @@
we get the correct PC. If not, we set a flag
to correct it every time through.
*/
- if (opDEC_testing && regs.pc == opDEC_test_pc) {
- opDEC_fix = 4;
- printk("opDEC fixup enabled.\n");
+ if (opDEC_testing) {
+ if (regs.pc == opDEC_test_pc) {
+ opDEC_fix = 4;
+ regs.pc += 4;
+ printk("opDEC fixup enabled.\n");
+ }
+ return;
}
regs.pc += opDEC_fix;
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/lib/Makefile linux/arch/alpha/lib/Makefile
--- v2.4.13/linux/arch/alpha/lib/Makefile Tue Jul 3 17:08:18 2001
+++ linux/arch/alpha/lib/Makefile Mon Nov 5 09:47:41 2001
@@ -49,6 +49,10 @@
fpreg.o \
callback_srm.o srm_puts.o srm_printk.o
+ifeq ($(CONFIG_SMP),y)
+ OBJS += dec_and_lock.o
+endif
+
lib.a: $(OBJS)
$(AR) rcs lib.a $(OBJS)
diff -u --recursive --new-file v2.4.13/linux/arch/alpha/lib/dec_and_lock.c linux/arch/alpha/lib/dec_and_lock.c
--- v2.4.13/linux/arch/alpha/lib/dec_and_lock.c Wed Dec 31 16:00:00 1969
+++ linux/arch/alpha/lib/dec_and_lock.c Mon Nov 5 09:47:41 2001
@@ -0,0 +1,40 @@
+/*
+ * arch/alpha/lib/dec_and_lock.c
+ *
+ * ll/sc version of atomic_dec_and_lock()
+ *
+ */
+
+#include
+#include
+
+ asm (".text \n\
+ .global atomic_dec_and_lock \n\
+ .ent atomic_dec_and_lock \n\
+ .align 4 \n\
+atomic_dec_and_lock: \n\
+ .prologue 0 \n\
+1: ldl_l $1, 0($16) \n\
+ subl $1, 1, $1 \n\
+ beq $1, 2f \n\
+ stl_c $1, 0($16) \n\
+ beq $1, 3f \n\
+ mb \n\
+ clr $0 \n\
+ ret \n\
+3: br 1b \n\
+2: lda $27, atomic_dec_and_lock_1 \n\
+ .end atomic_dec_and_lock");
+
+ /* FALLTHRU */
+
+static int __attribute__((unused))
+atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock)
+{
+ /* Slow path */
+ spin_lock(lock);
+ if (atomic_dec_and_test(atomic))
+ return 1;
+ spin_unlock(lock);
+ return 0;
+}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/config.in linux/arch/arm/config.in
--- v2.4.13/linux/arch/arm/config.in Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/config.in Thu Oct 25 13:53:44 2001
@@ -39,6 +39,7 @@
CLPS711x/EP721x-based CONFIG_ARCH_CLPS711X \
Co-EBSA285 CONFIG_ARCH_CO285 \
EBSA-110 CONFIG_ARCH_EBSA110 \
+ Epxa10db CONFIG_ARCH_CAMELOT \
FootBridge CONFIG_ARCH_FOOTBRIDGE \
Integrator CONFIG_ARCH_INTEGRATOR \
LinkUp-L7200 CONFIG_ARCH_L7200 \
@@ -73,7 +74,16 @@
dep_bool ' Brutus' CONFIG_SA1100_BRUTUS $CONFIG_ARCH_SA1100
dep_bool ' CerfBoard' CONFIG_SA1100_CERF $CONFIG_ARCH_SA1100
if [ "$CONFIG_SA1100_CERF" = "y" ]; then
- bool ' 32MB Cerf support' CONFIG_SA1100_CERF_32MB
+ choice 'Cerf RAM available' \
+ "8MB CONFIG_SA1100_CERF_8MB \
+ 16MB CONFIG_SA1100_CERF_16MB \
+ 32MB CONFIG_SA1100_CERF_32MB \
+ 64MB CONFIG_SA1100_CERF_64MB" CerfRam
+ choice 'Cerf Flash available' \
+ "8MB CONFIG_SA1100_CERF_FLASH_8MB \
+ 16MB CONFIG_SA1100_CERF_FLASH_16MB \
+ 32MB CONFIG_SA1100_CERF_FLASH_32MB" CerfFlash
+ bool 'Cerf w/CPLD support (CerfPDA)' CONFIG_SA1100_CERF_CPLD
fi
dep_bool ' Compaq iPAQ H3600' CONFIG_SA1100_H3600 $CONFIG_ARCH_SA1100
#dep_bool ' Empeg' CONFIG_SA1100_EMPEG $CONFIG_ARCH_SA1100
@@ -194,7 +204,8 @@
"$CONFIG_ARCH_TBOX" = "y" -o "$CONFIG_ARCH_SHARK" = "y" -o \
"$CONFIG_ARCH_NEXUSPCI" = "y" -o "$CONFIG_ARCH_CLPS711X" = "y" -o \
"$CONFIG_ARCH_INTEGRATOR" = "y" -o "$CONFIG_ARCH_SA1100" = "y" -o \
- "$CONFIG_ARCH_L7200" = "y" -o "$CONFIG_ARCH_ANAKIN" = "y" ]; then
+ "$CONFIG_ARCH_L7200" = "y" -o "$CONFIG_ARCH_ANAKIN" = "y" -o \
+ "$CONFIG_ARCH_CAMELOT" = "y" ]; then
define_bool CONFIG_CPU_32v4 y
else
define_bool CONFIG_CPU_32v4 n
@@ -369,6 +380,7 @@
"$CONFIG_ARCH_CATS" = "y" -o \
"$CONFIG_ARCH_P720T" = "y" -o \
"$CONFIG_ARCH_CDB89712" = "y" -o \
+ "$CONFIG_ARCH_CAMELOT" = "y" -o \
"$CONFIG_ARCH_ANAKIN" = "y" ]; then
string 'Default kernel command string' CONFIG_CMDLINE ""
fi
@@ -562,7 +574,9 @@
bool 'Verbose kernel error messages' CONFIG_DEBUG_ERRORS
bool 'Verbose user fault messages' CONFIG_DEBUG_USER
bool 'Include debugging information in kernel binary' CONFIG_DEBUG_INFO
+bool 'Debug memory allocations' CONFIG_DEBUG_SLAB
bool 'Magic SysRq key' CONFIG_MAGIC_SYSRQ
+bool 'Spinlock debugging' CONFIG_DEBUG_SPINLOCK
dep_bool 'Disable pgtable cache' CONFIG_NO_PGT_CACHE $CONFIG_CPU_26
# These options are only for real kernel hackers who want to get their hands dirty.
dep_bool 'Kernel low-level debugging functions' CONFIG_DEBUG_LL $CONFIG_EXPERIMENTAL
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/adsbitsy linux/arch/arm/def-configs/adsbitsy
--- v2.4.13/linux/arch/arm/def-configs/adsbitsy Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/adsbitsy Thu Oct 25 13:53:44 2001
@@ -0,0 +1,674 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+CONFIG_SA1100_ADSBITSY=y
+CONFIG_SA1111=y
+# CONFIG_SA1100_USB is not set
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="ip=off"
+# CONFIG_PFS168_CMDLINE is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_KEYBDEV is not set
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+CONFIG_AUDIO_UCB1200=y
+CONFIG_ADC_UCB1200=y
+# CONFIG_TOUCHSCREEN_BITSY is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_CRAMFS=y
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_E1355 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=y
+CONFIG_USB_OHCI_NOPCI=y
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_HID is not set
+# CONFIG_USB_KBD is not set
+CONFIG_USB_MOUSE=y
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_DABUSB is not set
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_RIO500 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/assabet linux/arch/arm/def-configs/assabet
--- v2.4.13/linux/arch/arm/def-configs/assabet Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/assabet Thu Oct 25 13:53:44 2001
@@ -8,6 +8,8 @@
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
#
# Code maturity level options
@@ -31,6 +33,7 @@
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_L7200 is not set
@@ -62,13 +65,15 @@
#
CONFIG_SA1100_ASSABET=y
# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
@@ -90,7 +95,12 @@
#
# CLPS711X/EP721X Implementations
#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
@@ -110,14 +120,14 @@
# CONFIG_CPU_ARM1020 is not set
# CONFIG_CPU_SA110 is not set
CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
CONFIG_DISCONTIGMEM=y
-# CONFIG_CPU_BIG_ENDIAN is not set
#
# General setup
#
# CONFIG_PCI is not set
-# CONFIG_ISA is not set
+CONFIG_ISA=y
# CONFIG_ISA_DMA is not set
CONFIG_CPU_FREQ=y
CONFIG_HOTPLUG=y
@@ -134,6 +144,10 @@
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
@@ -142,10 +156,8 @@
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_PM=y
-# CONFIG_APM is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE=""
-# CONFIG_PFS168_CMDLINE is not set
CONFIG_LEDS=y
CONFIG_LEDS_TIMER=y
CONFIG_LEDS_CPU=y
@@ -178,6 +190,8 @@
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_NOSWAP=y
# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
@@ -191,47 +205,31 @@
# CONFIG_MTD_CFI_I4 is not set
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_JEDEC is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_SUN_UFLASH is not set
# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RPXLITE is not set
-# CONFIG_MTD_TQM8XXL is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_SBC_GXX is not set
-# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
CONFIG_MTD_SA1100=y
-CONFIG_MTD_SA1100_REDBOOT_PARTITIONS=y
-# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_DBOX2 is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_CFI_FLAGADM is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SOLUTIONENGINE is not set
-# CONFIG_MTD_MIXMEM is not set
-# CONFIG_MTD_OCTAGON is not set
-# CONFIG_MTD_VMAX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_PCI is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_LART is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
@@ -253,6 +251,7 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -262,6 +261,7 @@
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_BLK_DEV_DAC960 is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_NBD is not set
@@ -278,6 +278,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -339,6 +340,7 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -348,6 +350,9 @@
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC 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 is not set
# CONFIG_NET_POCKET is not set
@@ -356,8 +361,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -442,6 +448,8 @@
# CONFIG_WINBOND_FIR is not set
# 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_SA1100_FIR=m
#
@@ -486,6 +494,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -510,6 +521,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Character devices
@@ -519,31 +534,36 @@
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_UART00 is not set
+# CONFIG_SERIAL_UART00_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
CONFIG_SA1100_DEFAULT_BAUDRATE=38400
CONFIG_SERIAL_8250=m
# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=32
-CONFIG_UCB1200=y
-CONFIG_TOUCHSCREEN_UCB1200=y
-# CONFIG_AUDIO_UCB1200 is not set
-CONFIG_ADC_UCB1200=y
-# CONFIG_TOUCHSCREEN_BITSY is not set
-# CONFIG_PROFILER is not set
-# CONFIG_PFS168_SPI is not set
-# CONFIG_PFS168_DTMF is not set
-# CONFIG_PFS168_MISC is not set
#
# I2C support
@@ -551,6 +571,19 @@
# CONFIG_I2C is not set
#
+# L3 serial bus support
+#
+CONFIG_L3=y
+CONFIG_L3_ALGOBIT=y
+CONFIG_L3_BIT_SA1100_GPIO=y
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+CONFIG_BIT_SA1100_GPIO=y
+
+#
# Mice
#
# CONFIG_BUSMOUSE is not set
@@ -559,7 +592,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -588,6 +625,8 @@
#
# PCMCIA character devices
#
+CONFIG_PCMCIA_SERIAL_CS=m
+# CONFIG_MWAVE is not set
#
# Multimedia devices
@@ -607,13 +646,16 @@
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_CRAMFS is not set
@@ -621,8 +663,9 @@
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
+# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -645,6 +688,7 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
@@ -662,6 +706,8 @@
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
@@ -677,6 +723,7 @@
# 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
@@ -736,11 +783,10 @@
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_SA1100=y
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_E1355 is not set
+# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
@@ -759,12 +805,10 @@
# Sound
#
CONFIG_SOUND=y
-CONFIG_SOUND_ASSABET_UDA1341=y
-# CONFIG_SOUND_BITSY_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
+# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_ES1370 is not set
@@ -773,21 +817,138 @@
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_SA1100=y
+CONFIG_SOUND_UDA1341=y
+CONFIG_SOUND_ASSABET_UDA1341=y
+# CONFIG_SOUND_H3600_UDA1341 is not set
+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+# CONFIG_SOUND_SA1100SSP is not set
# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_WAVEARTIST is not set
# CONFIG_SOUND_TVMIXER is not set
#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_MCP=y
+CONFIG_MCP_SA1100=y
+CONFIG_MCP_UCB1200=y
+CONFIG_MCP_UCB1200_AUDIO=m
+CONFIG_MCP_UCB1200_TS=y
+
+#
# USB support
#
# CONFIG_USB is not set
#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
# Bluetooth support
#
# CONFIG_BLUEZ is not set
@@ -799,7 +960,9 @@
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_SLAB is not set
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_NO_PGT_CACHE is not set
# CONFIG_DEBUG_LL is not set
# CONFIG_DEBUG_DC21285_PORT is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/bitsy linux/arch/arm/def-configs/bitsy
--- v2.4.13/linux/arch/arm/def-configs/bitsy Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/bitsy Wed Dec 31 16:00:00 1969
@@ -1,763 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_EISA is not set
-# CONFIG_SBUS is not set
-# CONFIG_MCA is not set
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# System Type
-#
-# CONFIG_ARCH_ANAKIN is not set
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_SHARK is not set
-
-#
-# Archimedes/A5000 Implementations
-#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-
-#
-# Footbridge Implementations
-#
-# CONFIG_ARCH_CATS is not set
-# CONFIG_ARCH_PERSONAL_SERVER is not set
-# CONFIG_ARCH_EBSA285_ADDIN is not set
-# CONFIG_ARCH_EBSA285_HOST is not set
-# CONFIG_ARCH_NETWINDER is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_ASSABET_NEPONSET is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_BITSY=y
-# CONFIG_SA1100_EXTENEX1 is not set
-# CONFIG_SA1100_FLEXANET is not set
-# CONFIG_SA1100_FREEBIRD is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HUW_WEBPANEL is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_OMNIMETER is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHERMAN is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_PFS168 is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_YOPY is not set
-CONFIG_SA1100_USB=m
-CONFIG_SA1100_USB_NETLINK=m
-# CONFIG_SA1100_USB_CHAR is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-# CONFIG_ARCH_P720T is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
-# CONFIG_CPU_32v3 is not set
-CONFIG_CPU_32v4=y
-# CONFIG_CPU_ARM610 is not set
-# CONFIG_CPU_ARM710 is not set
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_SA110 is not set
-CONFIG_CPU_SA1100=y
-CONFIG_DISCONTIGMEM=y
-# CONFIG_CPU_BIG_ENDIAN is not set
-
-#
-# General setup
-#
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-CONFIG_CPU_FREQ=y
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_PM=y
-CONFIG_APM=m
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE=""
-# CONFIG_PFS168_CMDLINE is not set
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_BOOTLDR_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_JEDEC is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_SUN_UFLASH is not set
-# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RPXLITE is not set
-# CONFIG_MTD_TQM8XXL is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_SBC_GXX is not set
-# CONFIG_MTD_ELAN_104NC is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
-# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_DBOX2 is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_CFI_FLAGADM is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SOLUTIONENGINE is not set
-# CONFIG_MTD_MIXMEM is not set
-# CONFIG_MTD_OCTAGON is not set
-# CONFIG_MTD_VMAX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_L440GX is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_LART is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# 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_LOOP=m
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_MD_RAID1 is not set
-# CONFIG_MD_RAID5 is not set
-# CONFIG_BLK_DEV_LVM is not set
-
-#
-# Networking options
-#
-# CONFIG_PACKET is not set
-# CONFIG_NETLINK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-# CONFIG_MYRI_SBUS is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_ARCNET_COM20020_CS is not set
-# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=m
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
-# CONFIG_BLK_DEV_IDEDISK_IBM is not set
-# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
-# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
-# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
-# CONFIG_BLK_DEV_IDEDISK_WD is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-# CONFIG_BLK_DEV_TIVO is not set
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_ISAPNP is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input core support
-#
-# CONFIG_INPUT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-# CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
-# CONFIG_SERIAL_AMBA is not set
-# CONFIG_SERIAL_AMBA_CONSOLE is not set
-# CONFIG_SERIAL_CLPS711X is not set
-# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=38400
-CONFIG_SERIAL_8250=m
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-# CONFIG_UCB1200 is not set
-# CONFIG_TOUCHSCREEN_UCB1200 is not set
-# CONFIG_AUDIO_UCB1200 is not set
-# CONFIG_ADC_UCB1200 is not set
-CONFIG_TOUCHSCREEN_BITSY=y
-CONFIG_PROFILER=m
-# CONFIG_PFS168_SPI is not set
-# CONFIG_PFS168_DTMF is not set
-# CONFIG_PFS168_MISC is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=m
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-
-#
-# Input core support is needed for joysticks
-#
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_INTEL_RNG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-CONFIG_SA1100_RTC=m
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=2
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_CRAMFS=m
-# CONFIG_TMPFS is not set
-CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_ROOT_NFS is not set
-CONFIG_NFSD=m
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-# 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
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-CONFIG_SMB_NLS=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Console drivers
-#
-CONFIG_PC_KEYMAP=y
-# CONFIG_VGA_CONSOLE is not set
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_ACORN is not set
-# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_CYBER2000 is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_E1355 is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_CFB24 is not set
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-CONFIG_SOUND_BITSY_UDA1341=m
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-# CONFIG_SOUND_SA1100SSP is not set
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_SOUND_FUSION is not set
-# CONFIG_SOUND_CS4281 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_MAESTRO3 is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_MIDI_VIA82CXXX is not set
-# CONFIG_SOUND_OSS is not set
-# CONFIG_SOUND_TVMIXER is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Bluetooth support
-#
-# CONFIG_BLUEZ is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_NO_FRAME_POINTER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_NO_PGT_CACHE is not set
-# CONFIG_DEBUG_LL is not set
-# CONFIG_DEBUG_DC21285_PORT is not set
-# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/cerf linux/arch/arm/def-configs/cerf
--- v2.4.13/linux/arch/arm/def-configs/cerf Mon Nov 27 17:07:59 2000
+++ linux/arch/arm/def-configs/cerf Wed Dec 31 16:00:00 1969
@@ -1,434 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-# CONFIG_SBUS is not set
-CONFIG_UID16=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_OBSOLETE is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# System Type
-#
-# CONFIG_ARCH_ARCA5K is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_BRUTUS is not set
-CONFIG_SA1100_CERF=y
-CONFIG_SA1100_CERF_32MB=y
-# CONFIG_SA1100_BITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_THINCLIENT is not set
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_XP860 is not set
-# CONFIG_ANGELBOOT is not set
-# CONFIG_SA1100_FREQUENCY_SCALE is not set
-# CONFIG_SA1100_VOLTAGE_SCALE is not set
-# CONFIG_ARCH_ACORN is not set
-# CONFIG_FOOTBRIDGE is not set
-# CONFIG_FOOTBRIDGE_HOST is not set
-# CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA1100=y
-CONFIG_DISCONTIGMEM=y
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-CONFIG_PC_KEYMAP=y
-
-#
-# General setup
-#
-# CONFIG_SA1100_CERF_CMDLINE is not set
-CONFIG_HOTPLUG=y
-
-#
-# PCMCIA/CardBus support
-#
-CONFIG_PCMCIA=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_SA1100_PCMCIA=y
-CONFIG_VIRTUAL_BUS=y
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_SYSCTL=y
-CONFIG_NWFPE=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_PM is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="console=ttyS0,38400"
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_LVM is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_BLK_DEV_FLASH=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
-# CONFIG_INET_ECN is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_CERF_CS8900A=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network device support
-#
-# CONFIG_NET_PCMCIA is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# ATA/IDE/MFM/RLL support
-#
-CONFIG_IDE=y
-
-#
-# IDE, ATA and ATAPI Block devices
-#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
-# CONFIG_BLK_DEV_COMMERIAL is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_DMA_NONPCI is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-# CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_TOUCHSCREEN_UCB1200=y
-# CONFIG_TOUCHSCREEN_BITSY is not set
-# CONFIG_SERIAL is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# CONFIG_PCMCIA_SERIAL is not set
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS_VERBOSE=0
-# CONFIG_CRAMFS is not set
-# CONFIG_RAMFS is not set
-# CONFIG_ISO9660_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_ROOT_NFS is not set
-# CONFIG_NFSD is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_NLS is not set
-
-#
-# Console drivers
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_SA1100=y
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-# CONFIG_FBCON_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_LL is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/cerfcube linux/arch/arm/def-configs/cerfcube
--- v2.4.13/linux/arch/arm/def-configs/cerfcube Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/cerfcube Thu Oct 25 13:53:44 2001
@@ -0,0 +1,887 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+CONFIG_SA1100_CERF=y
+# CONFIG_SA1100_CERF_8MB is not set
+# CONFIG_SA1100_CERF_16MB is not set
+CONFIG_SA1100_CERF_32MB=y
+# CONFIG_SA1100_CERF_64MB is not set
+# CONFIG_SA1100_CERF_FLASH_8MB is not set
+CONFIG_SA1100_CERF_FLASH_16MB=y
+# CONFIG_SA1100_CERF_FLASH_32MB is not set
+# CONFIG_SA1100_CERF_CPLD is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB_NETLINK=y
+CONFIG_SA1100_USB_CHAR=y
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_CPU_FREQ=y
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="console=ttySA0 root=1f03 rw"
+# CONFIG_PFS168_CMDLINE is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_NETLINK=y
+CONFIG_RTNETLINK=y
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+CONFIG_FILTER=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+# CONFIG_ELMC is not set
+# CONFIG_ELMC_II is not set
+CONFIG_CERF_CS8900A=y
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=9600
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+# CONFIG_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_UCB1200 is not set
+# CONFIG_AUDIO_UCB1200 is not set
+# CONFIG_ADC_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_H3600 is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_BIT_SA1100_UCB1200 is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+
+#
+# L3 driver support
+#
+# CONFIG_L3_DRV_UDA1341 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_UMSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_FREEVXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# Miscellaneous USB drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/cerfpda linux/arch/arm/def-configs/cerfpda
--- v2.4.13/linux/arch/arm/def-configs/cerfpda Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/cerfpda Thu Oct 25 13:53:44 2001
@@ -0,0 +1,981 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+CONFIG_SA1100_CERF=y
+# CONFIG_SA1100_CERF_8MB is not set
+# CONFIG_SA1100_CERF_16MB is not set
+# CONFIG_SA1100_CERF_32MB is not set
+CONFIG_SA1100_CERF_64MB=y
+# CONFIG_SA1100_CERF_FLASH_8MB is not set
+# CONFIG_SA1100_CERF_FLASH_16MB is not set
+CONFIG_SA1100_CERF_FLASH_32MB=y
+CONFIG_SA1100_CERF_CPLD=y
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB_NETLINK=y
+CONFIG_SA1100_USB_CHAR=y
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_CPU_FREQ=y
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="console=ttySA0 cpufreq_max=221200 root=1f03 rw"
+# CONFIG_PFS168_CMDLINE is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_CFI_B1 is not set
+# CONFIG_MTD_CFI_B2 is not set
+CONFIG_MTD_CFI_B4=y
+# CONFIG_MTD_CFI_I1 is not set
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK=y
+CONFIG_RTNETLINK=y
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+CONFIG_FILTER=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+# CONFIG_ELMC is not set
+# CONFIG_ELMC_II is not set
+CONFIG_CERF_CS8900A=y
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_STRIP=m
+CONFIG_WAVELAN=m
+CONFIG_ARLAN=m
+CONFIG_AIRONET4500=m
+CONFIG_AIRONET4500_NONCS=m
+# CONFIG_AIRONET4500_PNP is not set
+# CONFIG_AIRONET4500_PCI is not set
+# CONFIG_AIRONET4500_ISA is not set
+# CONFIG_AIRONET4500_I365 is not set
+CONFIG_AIRONET4500_PROC=m
+
+#
+# Wireless Pcmcia cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_AIRO_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+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_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+CONFIG_NET_PCMCIA_RADIO=y
+CONFIG_PCMCIA_RAYCS=m
+CONFIG_PCMCIA_NETWAVE=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_AIRONET4500_CS=m
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+CONFIG_CERF_TS_MANUAL=y
+CONFIG_CERF_TS_MAXX="924"
+CONFIG_CERF_TS_MAXY="920"
+CONFIG_CERF_TS_MINX="57"
+CONFIG_CERF_TS_MINY="52"
+CONFIG_CERF_TS_RESX="240"
+CONFIG_CERF_TS_RESY="320"
+# CONFIG_AUDIO_UCB1200 is not set
+# CONFIG_ADC_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_H3600 is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+CONFIG_SA1100_CERF_KEYPAD=y
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_BIT_SA1100_UCB1200 is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+
+#
+# L3 driver support
+#
+# CONFIG_L3_DRV_UDA1341 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_UMSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_FREEVXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+CONFIG_CERF_LCD_38_A=y
+# CONFIG_CERF_LCD_57_A is not set
+# CONFIG_CERF_LCD_72_A is not set
+CONFIG_SA1100_CERF_LCD_BACKLIGHT=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+# CONFIG_FBCON_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+# CONFIG_SOUND_H3600_UDA1341 is not set
+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+CONFIG_SOUND_CERF_UDA1341=y
+# CONFIG_SOUND_SA1100SSP is not set
+# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_WAVEARTIST is not set
+# CONFIG_SOUND_TVMIXER is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# Miscellaneous USB drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
+# Bluetooth support
+#
+CONFIG_BLUEZ=y
+CONFIG_BLUEZ_L2CAP=y
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BLUEZ_HCIUSB is not set
+CONFIG_BLUEZ_HCIUART=y
+# CONFIG_BLUEZ_HCIVHCI is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/cerfpod linux/arch/arm/def-configs/cerfpod
--- v2.4.13/linux/arch/arm/def-configs/cerfpod Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/cerfpod Thu Oct 25 13:53:44 2001
@@ -0,0 +1,908 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+CONFIG_SA1100_CERF=y
+# CONFIG_SA1100_CERF_8MB is not set
+# CONFIG_SA1100_CERF_16MB is not set
+CONFIG_SA1100_CERF_32MB=y
+# CONFIG_SA1100_CERF_64MB is not set
+# CONFIG_SA1100_CERF_FLASH_8MB is not set
+CONFIG_SA1100_CERF_FLASH_16MB=y
+# CONFIG_SA1100_CERF_FLASH_32MB is not set
+# CONFIG_SA1100_CERF_CPLD is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB_NETLINK=y
+CONFIG_SA1100_USB_CHAR=y
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_CPU_FREQ=y
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="console=ttySA0 root=1f03 rw"
+# CONFIG_PFS168_CMDLINE is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK=y
+CONFIG_RTNETLINK=y
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+CONFIG_FILTER=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+# CONFIG_ELMC is not set
+# CONFIG_ELMC_II is not set
+CONFIG_CERF_CS8900A=y
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+# CONFIG_CERF_TS_MANUAL is not set
+CONFIG_AUDIO_UCB1200=y
+# CONFIG_ADC_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_H3600 is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_BIT_SA1100_UCB1200 is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+
+#
+# L3 driver support
+#
+# CONFIG_L3_DRV_UDA1341 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+CONFIG_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_UMSDOS_FS=y
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_FREEVXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+# CONFIG_CERF_LCD_38_A is not set
+CONFIG_CERF_LCD_57_A=y
+# CONFIG_CERF_LCD_72_A is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+# CONFIG_FBCON_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# Miscellaneous USB drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/edb7211 linux/arch/arm/def-configs/edb7211
--- v2.4.13/linux/arch/arm/def-configs/edb7211 Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/edb7211 Thu Oct 25 13:53:44 2001
@@ -0,0 +1,401 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_CLPS711X=y
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+
+#
+# CLPS711X/EP721X Implementations
+#
+CONFIG_ARCH_EDB7211=y
+CONFIG_EP7211_BOOT_MODE=y
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_ACORN is not set
+CONFIG_ARCH_EP7211=y
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+CONFIG_CPU_ARM720T=y
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+# CONFIG_CPU_SA1100 is not set
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_ANGELBOOT is not set
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# 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
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_CLPS711X=y
+CONFIG_SERIAL_CLPS711X_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+CONFIG_MINIX_FS=y
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+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 is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_SMB_NLS is not set
+# CONFIG_NLS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_LL=y
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/epxa10db linux/arch/arm/def-configs/epxa10db
--- v2.4.13/linux/arch/arm/def-configs/epxa10db Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/epxa10db Thu Oct 25 13:53:44 2001
@@ -0,0 +1,662 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+CONFIG_ARCH_CAMELOT=y
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+CONFIG_CPU_ARM922T=y
+CONFIG_CPU_ARM92X_CPU_IDLE=y
+CONFIG_CPU_ARM92X_I_CACHE_ON=y
+CONFIG_CPU_ARM92X_D_CACHE_ON=y
+# CONFIG_CPU_ARM92X_WRITETHROUGH is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+# CONFIG_CPU_SA1100 is not set
+# CONFIG_ARM_THUMB is not set
+# CONFIG_DISCONTIGMEM is not set
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="console=ttyUA0,38400 root=/dev/mtdblock0 rw"
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+CONFIG_MTD_DEBUG=y
+CONFIG_MTD_DEBUG_VERBOSE=0
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_BOOTLDR_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
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+CONFIG_MTD_EPXA10DB=y
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+# CONFIG_MTD_SA1100 is not set
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+# CONFIG_BLK_DEV_INITRD is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_ETHER00=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=y
+CONFIG_PPP_MULTILINK=y
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+CONFIG_PPP_SYNC_TTY=y
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=y
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+CONFIG_SERIAL_UART00=y
+CONFIG_SERIAL_UART00_CONSOLE=y
+# CONFIG_SERIAL_SA1100 is not set
+# CONFIG_SERIAL_SA1100_CONSOLE is not set
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+# CONFIG_L3_SA1111 is not set
+# CONFIG_L3_DRV_UDA1341 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=y
+CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_TMPFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_FREEVXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+# CONFIG_NLS is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+# CONFIG_USB_DABUSB is not set
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_NO_PGT_CACHE is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/graphicsclient linux/arch/arm/def-configs/graphicsclient
--- v2.4.13/linux/arch/arm/def-configs/graphicsclient Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/graphicsclient Thu Oct 25 13:53:44 2001
@@ -6,6 +6,8 @@
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
#
# Code maturity level options
@@ -23,16 +25,18 @@
#
# System Type
#
+# CONFIG_ARCH_ANAKIN is not set
# CONFIG_ARCH_ARCA5K is not set
# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_RPC is not set
CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_SHARK is not set
#
# Archimedes/A5000 Implementations
@@ -62,23 +66,28 @@
# CONFIG_SA1100_CERF is not set
# CONFIG_SA1100_BITSY is not set
# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
CONFIG_SA1100_GRAPHICSCLIENT=y
+# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
# CONFIG_SA1100_YOPY is not set
-# CONFIG_SA1100_PFS168 is not set
-CONFIG_SA1100_USB=m
-CONFIG_SA1100_USB_NETLINK=m
-CONFIG_SA1100_USB_CHAR=m
-# CONFIG_SA1100_FREQUENCY_SCALE is not set
-# CONFIG_SA1100_VOLTAGE_SCALE is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_ADSBITSY is not set
+# CONFIG_SA1100_USB is not set
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
#
# CLPS711X/EP721X Implementations
@@ -104,18 +113,15 @@
# CONFIG_CPU_SA110 is not set
CONFIG_CPU_SA1100=y
CONFIG_DISCONTIGMEM=y
+# CONFIG_CPU_BIG_ENDIAN is not set
#
# General setup
#
-
-#
-# Please ensure that you have read the help on the next option
-#
-# CONFIG_ANGELBOOT is not set
# CONFIG_PCI is not set
# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
+# CONFIG_CPU_FREQ is not set
CONFIG_HOTPLUG=y
#
@@ -125,7 +131,7 @@
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
# CONFIG_PCMCIA_CLPS6700 is not set
-CONFIG_PCMCIA_SA1100=m
+CONFIG_PCMCIA_SA1100=y
CONFIG_NET=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
@@ -138,12 +144,14 @@
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PM is not set
+# CONFIG_APM is not set
# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="root=nfs"
+CONFIG_CMDLINE="ip=off"
# CONFIG_PFS168_CMDLINE is not set
-# CONFIG_LEDS is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UCB1200 is not set
#
# Parallel port support
@@ -153,65 +161,87 @@
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=m
+CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
#
-# Disk-On-Chip Device Drivers
+# User Modules And Translation Layers
#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
#
-# RAM/ROM Device Drivers
+# RAM/ROM/Flash chip drivers
#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_JEDEC is not set
#
-# Linearly Mapped Flash Device Drivers
+# Mapping drivers for chip access
#
-CONFIG_MTD_CFI=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_INTELEXT=m
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
-# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=800000
+CONFIG_MTD_PHYSMAP_LEN=1000000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=4
+# CONFIG_MTD_SUN_UFLASH is not set
# CONFIG_MTD_NORA is not set
# CONFIG_MTD_PNC2000 is not set
# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SBC_MEDIAGX is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
# CONFIG_MTD_ELAN_104NC is not set
-CONFIG_MTD_SA1100=m
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
+# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_CSTM_CFI_JEDEC is not set
-# CONFIG_MTD_JEDEC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
# CONFIG_MTD_MIXMEM is not set
# CONFIG_MTD_OCTAGON is not set
# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
#
-# NAND Flash Device Drivers
+# Self-contained MTD device drivers
#
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_NAND_SPIA is not set
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
#
-# User Modules And Translation Layers
+# Disk-On-Chip Device Drivers
#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
#
# Plug and Play configuration
@@ -258,6 +288,7 @@
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
@@ -302,22 +333,25 @@
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
CONFIG_NET_VENDOR_SMC=y
# CONFIG_WD80x3 is not set
+# CONFIG_ULTRAMCA is not set
# CONFIG_ULTRA is not set
# CONFIG_ULTRA32 is not set
CONFIG_SMC9194=y
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
@@ -326,11 +360,14 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
@@ -359,7 +396,7 @@
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_PCNET=y
# CONFIG_PCMCIA_NMCLAN is not set
# CONFIG_PCMCIA_SMC91C92 is not set
# CONFIG_PCMCIA_XIRC2PS is not set
@@ -380,19 +417,19 @@
#
# ATA/IDE/MFM/RLL support
#
-CONFIG_IDE=m
+CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
-CONFIG_BLK_DEV_IDE=m
+CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=m
+CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
@@ -403,7 +440,7 @@
# CONFIG_BLK_DEV_IDEDISK_WD is not set
# CONFIG_BLK_DEV_COMMERIAL is not set
# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_IDECS=y
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -452,19 +489,31 @@
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=9600
-# CONFIG_TOUCHSCREEN_UCB1200 is not set
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+CONFIG_AUDIO_UCB1200=y
+CONFIG_ADC_UCB1200=y
# CONFIG_TOUCHSCREEN_BITSY is not set
# CONFIG_PROFILER is not set
# CONFIG_PFS168_SPI is not set
# CONFIG_PFS168_DTMF is not set
# CONFIG_PFS168_MISC is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
#
# I2C support
@@ -505,7 +554,10 @@
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
-# CONFIG_PCMCIA_SERIAL is not set
+
+#
+# PCMCIA character devices
+#
#
# Multimedia devices
@@ -525,20 +577,22 @@
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
+CONFIG_VFAT_FS=y
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
+CONFIG_JFFS_FS=y
CONFIG_JFFS_FS_VERBOSE=0
-CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_CRAMFS is not set
-CONFIG_RAMFS=m
+CONFIG_CRAMFS=y
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -552,7 +606,6 @@
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
@@ -607,11 +660,13 @@
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
@@ -619,11 +674,12 @@
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
@@ -631,7 +687,6 @@
#
CONFIG_PC_KEYMAP=y
# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
#
# Frame-buffer support
@@ -642,6 +697,8 @@
# CONFIG_FB_CLPS711X is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_SA1100=y
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_E1355 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
@@ -665,6 +722,11 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
#
# Kernel hacking
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/graphicsmaster linux/arch/arm/def-configs/graphicsmaster
--- v2.4.13/linux/arch/arm/def-configs/graphicsmaster Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/def-configs/graphicsmaster Thu Oct 25 13:53:44 2001
@@ -0,0 +1,755 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ANAKIN is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
+# Footbridge Implementations
+#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_YOPY is not set
+CONFIG_SA1100_GRAPHICSMASTER=y
+# CONFIG_SA1100_ADSBITSY is not set
+CONFIG_SA1111=y
+# CONFIG_SA1100_USB is not set
+# CONFIG_SA1100_USB_NETLINK is not set
+# CONFIG_SA1100_USB_CHAR is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_32v3 is not set
+CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="ip=off"
+# CONFIG_PFS168_CMDLINE is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# 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
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=800000
+CONFIG_MTD_PHYSMAP_LEN=1000000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=4
+# CONFIG_MTD_SUN_UFLASH is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
+# CONFIG_MTD_SC520CDP is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_ELAN_104NC is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
+# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# 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_LOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+CONFIG_NET_VENDOR_SMC=y
+# CONFIG_WD80x3 is not set
+# CONFIG_ULTRAMCA is not set
+# CONFIG_ULTRA is not set
+# CONFIG_ULTRA32 is not set
+CONFIG_SMC9194=y
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_KEYBDEV is not set
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+CONFIG_UCB1200=y
+CONFIG_TOUCHSCREEN_UCB1200=y
+CONFIG_AUDIO_UCB1200=y
+CONFIG_ADC_UCB1200=y
+# CONFIG_TOUCHSCREEN_BITSY is not set
+# CONFIG_PROFILER is not set
+# CONFIG_PFS168_SPI is not set
+# CONFIG_PFS168_DTMF is not set
+# CONFIG_PFS168_MISC is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=y
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=y
+CONFIG_JFFS_FS_VERBOSE=0
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_CRAMFS=y
+# CONFIG_TMPFS is not set
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# 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
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYMAP=y
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_E1355 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=y
+CONFIG_USB_OHCI_NOPCI=y
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_HID is not set
+# CONFIG_USB_KBD is not set
+CONFIG_USB_MOUSE=y
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_DABUSB is not set
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_RIO500 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_NO_FRAME_POINTER is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/h3600 linux/arch/arm/def-configs/h3600
--- v2.4.13/linux/arch/arm/def-configs/h3600 Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/h3600 Thu Oct 25 13:53:44 2001
@@ -2,8 +2,14 @@
# Automatically generated make config: don't edit
#
CONFIG_ARM=y
+# CONFIG_EISA is not set
# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
#
# Code maturity level options
@@ -16,46 +22,85 @@
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
+# CONFIG_KMOD is not set
#
# System Type
#
+# CONFIG_ARCH_ANAKIN is not set
# CONFIG_ARCH_ARCA5K is not set
# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_RPC is not set
CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_SHARK is not set
#
# Archimedes/A5000 Implementations
#
#
+# Archimedes/A5000 Implementations (select only ONE)
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+
+#
# Footbridge Implementations
#
+# CONFIG_ARCH_CATS is not set
+# CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+# CONFIG_ARCH_EBSA285_HOST is not set
+# CONFIG_ARCH_NETWINDER is not set
#
# SA11x0 Implementations
#
# CONFIG_SA1100_ASSABET is not set
+# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_BITSY=y
-# CONFIG_SA1100_LART is not set
+CONFIG_SA1100_H3600=y
+# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
+# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_NANOENGINE is not set
-# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_OMNIMETER is not set
+# CONFIG_SA1100_PANGOLIN is not set
+# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_PFS168 is not set
+# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
-# CONFIG_SA1100_PANGOLIN is not set
-# CONFIG_ANGELBOOT is not set
+# CONFIG_SA1100_YOPY is not set
CONFIG_SA1100_USB=m
-CONFIG_SA1100_FREQUENCY_SCALE=y
-# CONFIG_SA1100_VOLTAGE_SCALE is not set
+CONFIG_SA1100_USB_NETLINK=m
+# CONFIG_SA1100_USB_CHAR is not set
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
+# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
@@ -66,42 +111,55 @@
#
# Processor Type
#
+# CONFIG_CPU_32v3 is not set
CONFIG_CPU_32v4=y
+# CONFIG_CPU_ARM610 is not set
+# CONFIG_CPU_ARM710 is not set
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_SA110 is not set
CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
CONFIG_DISCONTIGMEM=y
#
# General setup
#
# CONFIG_PCI is not set
-# CONFIG_ISA is not set
+CONFIG_ISA=y
# CONFIG_ISA_DMA is not set
-CONFIG_PC_KEYMAP=y
+CONFIG_CPU_FREQ=y
CONFIG_HOTPLUG=y
#
# PCMCIA/CardBus support
#
-CONFIG_PCMCIA=m
-CONFIG_PCMCIA_DEBUG=y
-PCMCIA_DEBUG=1
-CONFIG_SA1100_PCMCIA=y
-CONFIG_VIRTUAL_BUS=y
+CONFIG_PCMCIA=y
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+# CONFIG_PCMCIA_CLPS6700 is not set
+CONFIG_PCMCIA_SA1100=y
CONFIG_NET=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
-CONFIG_NWFPE=y
+
+#
+# At least one math emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_PM=y
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE=""
# CONFIG_LEDS is not set
-# CONFIG_ALIGNMENT_TRAP is not set
+CONFIG_ALIGNMENT_TRAP=y
#
# Parallel port support
@@ -112,50 +170,86 @@
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_BOOTLDR_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
#
-# MTD drivers for mapped chips
+# User Modules And Translation Layers
#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_CFI_INTELEXT=m
-CONFIG_MTD_CFI_AMDSTD=m
-# CONFIG_MTD_JEDEC is not set
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_CFI_B1 is not set
+# CONFIG_MTD_CFI_B2 is not set
+CONFIG_MTD_CFI_B4=y
+# CONFIG_MTD_CFI_I1 is not set
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0
-CONFIG_MTD_PHYSMAP_LEN=0
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_JEDEC is not set
#
-# Drivers for chip mappings
+# Mapping drivers for chip access
#
-# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_OCTAGON is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RPXLITE is not set
-# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+CONFIG_MTD_SA1100=y
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
+# CONFIG_MTD_PCI is not set
#
-# User modules and translation layers for MTD devices
+# Self-contained MTD device drivers
#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -164,39 +258,41 @@
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_BLK_DEV_DAC960 is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_LVM is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_BLK_DEV_FLASH=y
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
#
# Networking options
#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK=y
-CONFIG_RTNETLINK=y
-CONFIG_NETLINK_DEV=y
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
+# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set
@@ -213,6 +309,7 @@
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
@@ -236,8 +333,6 @@
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
@@ -247,13 +342,19 @@
#
# Ethernet (1000 Mbit)
#
-# CONFIG_YELLOWFIN is not set
# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
@@ -286,17 +387,13 @@
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_PCNET=y
# CONFIG_PCMCIA_NMCLAN is not set
# CONFIG_PCMCIA_SMC91C92 is not set
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_ARCNET_COM20020_CS is not set
# CONFIG_PCMCIA_IBMTR is not set
-CONFIG_NET_PCMCIA_RADIO=y
-# CONFIG_PCMCIA_RAYCS is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_AIRONET4500_CS is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
#
# Amateur Radio support
@@ -306,7 +403,43 @@
#
# IrDA (infrared) support
#
-# CONFIG_IRDA is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+# CONFIG_IRDA_OPTIONS is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# 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_SA1100_FIR=m
#
# ATA/IDE/MFM/RLL support
@@ -334,10 +467,10 @@
# CONFIG_BLK_DEV_IDEDISK_WD is not set
# CONFIG_BLK_DEV_COMMERIAL is not set
# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECS is not set
CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEFLOPPY=m
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
#
@@ -350,6 +483,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -374,20 +510,47 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Character devices
#
CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_SERIAL is not set
+# CONFIG_VT_CONSOLE is not set
+CONFIG_SERIAL=m
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_UART00 is not set
+# CONFIG_SERIAL_UART00_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SA1100_DEFAULT_BAUDRATE=115200
-# CONFIG_TOUCHSCREEN_UCB1200 is not set
-CONFIG_TOUCHSCREEN_BITSY=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+CONFIG_SERIAL_8250=m
+# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=32
@@ -397,15 +560,35 @@
# CONFIG_I2C is not set
#
+# L3 serial bus support
+#
+CONFIG_L3=y
+CONFIG_L3_ALGOBIT=y
+CONFIG_L3_BIT_SA1100_GPIO=y
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+CONFIG_BIT_SA1100_GPIO=y
+
+#
# Mice
#
# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
+CONFIG_MOUSE=m
+# CONFIG_PSMOUSE is not set
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -419,6 +602,7 @@
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
+CONFIG_SA1100_RTC=m
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
@@ -429,7 +613,17 @@
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
-# CONFIG_PCMCIA_SERIAL is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_PCMCIA_SERIAL_CS is not set
+# CONFIG_MWAVE is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
#
# File systems
@@ -437,23 +631,33 @@
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_UMSDOS_FS is not set
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=2
-CONFIG_CRAMFS=y
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_CRAMFS=m
+# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -467,7 +671,6 @@
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
@@ -477,15 +680,16 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=m
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=m
# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=m
-CONFIG_LOCKD=m
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_REMOTE=""
+# CONFIG_SMB_NLS_DEFAULT is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
@@ -493,16 +697,17 @@
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_MOUNT_SUBDIR is not set
-# CONFIG_NCPFS_NDS_DOMAINS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+CONFIG_ZLIB_FS_INFLATE=m
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
CONFIG_NLS=y
#
@@ -524,11 +729,13 @@
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
@@ -536,69 +743,219 @@
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
# Console drivers
#
+CONFIG_PC_KEYMAP=y
# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
#
# Frame-buffer support
#
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_CLPS711X is not set
CONFIG_FB_SA1100=y
+# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_ADVANCED=y
+# CONFIG_FBCON_MFB is not set
+# CONFIG_FBCON_CFB2 is not set
+# CONFIG_FBCON_CFB4 is not set
+# CONFIG_FBCON_CFB8 is not set
CONFIG_FBCON_CFB16=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-# CONFIG_FBCON_FONTS is not set
+# CONFIG_FBCON_CFB24 is not set
+# CONFIG_FBCON_CFB32 is not set
+# CONFIG_FBCON_AFB is not set
+# CONFIG_FBCON_ILBM is not set
+# CONFIG_FBCON_IPLAN2P2 is not set
+# CONFIG_FBCON_IPLAN2P4 is not set
+# CONFIG_FBCON_IPLAN2P8 is not set
+# CONFIG_FBCON_MAC is not set
+# CONFIG_FBCON_VGA_PLANES is not set
+# CONFIG_FBCON_VGA is not set
+# CONFIG_FBCON_HGA is not set
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
#
# Sound
#
-CONFIG_SOUND=m
-CONFIG_SOUND_UDA1341=m
-# CONFIG_SOUND_SA1100_SSP is not set
+CONFIG_SOUND=y
+# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_ES1370 is not set
# CONFIG_SOUND_ES1371 is not set
# CONFIG_SOUND_ESSSOLO1 is not set
# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_SA1100=y
+CONFIG_SOUND_UDA1341=y
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+CONFIG_SOUND_H3600_UDA1341=y
+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+# CONFIG_SOUND_SA1100SSP is not set
# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_WAVEARTIST is not set
# CONFIG_SOUND_TVMIXER is not set
#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_MCP_SA1100 is not set
+# CONFIG_MCP_UCB1200 is not set
+# CONFIG_MCP_UCB1200_AUDIO is not set
+# CONFIG_MCP_UCB1200_TS is not set
+
+#
# USB support
#
# CONFIG_USB is not set
#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
# Kernel hacking
#
-CONFIG_FRAME_POINTER=y
+# CONFIG_NO_FRAME_POINTER is not set
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_USER is not set
# CONFIG_DEBUG_INFO is not set
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_NO_PGT_CACHE is not set
+# CONFIG_DEBUG_LL is not set
+# CONFIG_DEBUG_DC21285_PORT is not set
+# CONFIG_DEBUG_CLPS711X_UART2 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/lart linux/arch/arm/def-configs/lart
--- v2.4.13/linux/arch/arm/def-configs/lart Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/lart Thu Oct 25 13:53:44 2001
@@ -62,13 +62,15 @@
#
# CONFIG_SA1100_ASSABET is not set
# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
@@ -90,7 +92,12 @@
#
# CLPS711X/EP721X Implementations
#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
@@ -126,6 +133,10 @@
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
@@ -136,7 +147,7 @@
CONFIG_PM=y
CONFIG_APM=m
# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="console=ttySA0,9600"
+CONFIG_CMDLINE="console=ttySA0,9600 root=/dev/ram"
# CONFIG_PFS168_CMDLINE is not set
CONFIG_LEDS=y
# CONFIG_LEDS_TIMER is not set
@@ -151,10 +162,10 @@
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=m
+CONFIG_MTD=y
CONFIG_MTD_DEBUG=y
CONFIG_MTD_DEBUG_VERBOSE=1
-# CONFIG_MTD_PARTITIONS is not set
+CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_BOOTLDR_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
@@ -162,28 +173,16 @@
#
# User Modules And Translation Layers
#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_BLOCK_RO=m
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_B1 is not set
-# CONFIG_MTD_CFI_B2 is not set
-CONFIG_MTD_CFI_B4=y
-# CONFIG_MTD_CFI_I1 is not set
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-CONFIG_MTD_CFI_INTELEXT=m
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_AMDSTD is not set
# CONFIG_MTD_SHARP is not set
@@ -204,28 +203,27 @@
# CONFIG_MTD_NETSC520 is not set
# CONFIG_MTD_SBC_GXX is not set
# CONFIG_MTD_ELAN_104NC is not set
-# CONFIG_MTD_SA1100 is not set
-# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
-# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
-# CONFIG_MTD_DC21285 is not set
-# CONFIG_MTD_IQ80310 is not set
# CONFIG_MTD_DBOX2 is not set
# CONFIG_MTD_CSTM_MIPS_IXX is not set
# CONFIG_MTD_CFI_FLAGADM is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SOLUTIONENGINE is not set
# CONFIG_MTD_MIXMEM is not set
# CONFIG_MTD_OCTAGON is not set
# CONFIG_MTD_VMAX is not set
# CONFIG_MTD_OCELOT is not set
# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
+# CONFIG_MTD_SA1100 is not set
+# CONFIG_MTD_DC21285 is not set
+# CONFIG_MTD_IQ80310 is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_LART is not set
+CONFIG_MTD_LART=y
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
@@ -247,6 +245,7 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -296,7 +295,7 @@
# CONFIG_ATM is not set
#
-#
+#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
@@ -351,8 +350,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -439,6 +439,8 @@
# CONFIG_WINBOND_FIR is not set
# 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_SA1100_FIR=m
#
@@ -483,6 +485,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -507,6 +512,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Character devices
@@ -515,18 +524,30 @@
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
CONFIG_SA1100_DEFAULT_BAUDRATE=9600
# CONFIG_SERIAL_8250 is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
@@ -535,7 +556,7 @@
CONFIG_TOUCHSCREEN_UCB1200=m
CONFIG_AUDIO_UCB1200=m
CONFIG_ADC_UCB1200=m
-# CONFIG_TOUCHSCREEN_BITSY is not set
+# CONFIG_TOUCHSCREEN_H3600 is not set
CONFIG_PROFILER=m
# CONFIG_PFS168_SPI is not set
# CONFIG_PFS168_DTMF is not set
@@ -547,6 +568,24 @@
# CONFIG_I2C is not set
#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+
+#
+# L3 driver support
+#
+# CONFIG_L3_DRV_UDA1341 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
# Mice
#
# CONFIG_BUSMOUSE is not set
@@ -555,7 +594,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -573,6 +616,7 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -594,18 +638,22 @@
# CONFIG_AUTOFS4_FS is not set
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+CONFIG_EXT3_FS=m
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=1
+# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=1
CONFIG_CRAMFS=m
@@ -614,7 +662,7 @@
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
+# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -637,6 +685,7 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_ROOT_NFS is not set
@@ -709,10 +758,7 @@
# Sound
#
CONFIG_SOUND=m
-# CONFIG_SOUND_ASSABET_UDA1341 is not set
-# CONFIG_SOUND_BITSY_UDA1341 is not set
-# CONFIG_SOUND_SA1111_UDA1341 is not set
-CONFIG_SOUND_SA1100SSP=m
+# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
@@ -723,19 +769,120 @@
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_MIDI_VIA82CXXX is not set
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+# CONFIG_SOUND_H3600_UDA1341 is not set
+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+CONFIG_SOUND_SA1100SSP=m
# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_WAVEARTIST is not set
# CONFIG_SOUND_TVMIXER is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# Miscellaneous USB drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/neponset linux/arch/arm/def-configs/neponset
--- v2.4.13/linux/arch/arm/def-configs/neponset Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/neponset Thu Oct 25 13:53:45 2001
@@ -8,6 +8,8 @@
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
+# CONFIG_GENERIC_ISA_DMA is not set
#
# Code maturity level options
@@ -31,6 +33,7 @@
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_L7200 is not set
@@ -62,13 +65,15 @@
#
CONFIG_SA1100_ASSABET=y
CONFIG_ASSABET_NEPONSET=y
+# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
@@ -84,6 +89,7 @@
# CONFIG_SA1100_XP860 is not set
# CONFIG_SA1100_YOPY is not set
CONFIG_SA1111=y
+CONFIG_FORCE_MAX_ZONEORDER=9
CONFIG_SA1100_USB=m
CONFIG_SA1100_USB_NETLINK=m
CONFIG_SA1100_USB_CHAR=m
@@ -91,7 +97,12 @@
#
# CLPS711X/EP721X Implementations
#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
@@ -111,16 +122,16 @@
# CONFIG_CPU_ARM1020 is not set
# CONFIG_CPU_SA110 is not set
CONFIG_CPU_SA1100=y
+# CONFIG_ARM_THUMB is not set
CONFIG_DISCONTIGMEM=y
-# CONFIG_CPU_BIG_ENDIAN is not set
#
# General setup
#
# CONFIG_PCI is not set
-# CONFIG_ISA is not set
+CONFIG_ISA=y
# CONFIG_ISA_DMA is not set
-# CONFIG_CPU_FREQ is not set
+CONFIG_CPU_FREQ=y
CONFIG_HOTPLUG=y
#
@@ -135,6 +146,10 @@
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_KCORE_ELF=y
@@ -143,10 +158,8 @@
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PM is not set
-# CONFIG_APM is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE=""
-# CONFIG_PFS168_CMDLINE is not set
CONFIG_LEDS=y
CONFIG_LEDS_TIMER=y
CONFIG_LEDS_CPU=y
@@ -180,50 +193,36 @@
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=m
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=m
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_CFI_INTELEXT=m
# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_AMDSTD is not set
-# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
# CONFIG_MTD_JEDEC is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_SUN_UFLASH is not set
# CONFIG_MTD_NORA is not set
-# CONFIG_MTD_PNC2000 is not set
-# CONFIG_MTD_RPXLITE is not set
-# CONFIG_MTD_TQM8XXL is not set
-# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_NETSC520 is not set
-# CONFIG_MTD_SBC_GXX is not set
-# CONFIG_MTD_ELAN_104NC is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_CDB89712 is not set
CONFIG_MTD_SA1100=m
-# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
-# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_DBOX2 is not set
-# CONFIG_MTD_CSTM_MIPS_IXX is not set
-# CONFIG_MTD_CFI_FLAGADM is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SOLUTIONENGINE is not set
-# CONFIG_MTD_MIXMEM is not set
-# CONFIG_MTD_OCTAGON is not set
-# CONFIG_MTD_VMAX is not set
-# CONFIG_MTD_OCELOT is not set
-# CONFIG_MTD_L440GX is not set
+# CONFIG_MTD_PCI is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_LART is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLKMTD is not set
@@ -245,6 +244,7 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -254,6 +254,7 @@
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_BLK_DEV_DAC960 is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_NBD is not set
@@ -270,6 +271,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -331,6 +333,7 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -345,6 +348,9 @@
# CONFIG_ULTRA32 is not set
CONFIG_SMC9194=y
# 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 is not set
# CONFIG_NET_POCKET is not set
@@ -353,8 +359,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -449,6 +456,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -488,31 +498,36 @@
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_UART00 is not set
+# CONFIG_SERIAL_UART00_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
CONFIG_SA1100_DEFAULT_BAUDRATE=9600
CONFIG_SERIAL_8250=m
# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=32
-CONFIG_UCB1200=y
-CONFIG_TOUCHSCREEN_UCB1200=y
-# CONFIG_AUDIO_UCB1200 is not set
-# CONFIG_ADC_UCB1200 is not set
-# CONFIG_TOUCHSCREEN_BITSY is not set
-# CONFIG_PROFILER is not set
-# CONFIG_PFS168_SPI is not set
-# CONFIG_PFS168_DTMF is not set
-# CONFIG_PFS168_MISC is not set
#
# I2C support
@@ -520,6 +535,19 @@
# CONFIG_I2C is not set
#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
# Mice
#
# CONFIG_BUSMOUSE is not set
@@ -528,11 +556,37 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -557,6 +611,8 @@
#
# PCMCIA character devices
#
+CONFIG_PCMCIA_SERIAL_CS=m
+# CONFIG_MWAVE is not set
#
# Multimedia devices
@@ -576,13 +632,16 @@
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=0
+# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_CRAMFS is not set
@@ -590,8 +649,9 @@
# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
+# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -614,6 +674,7 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
@@ -631,6 +692,8 @@
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
@@ -646,6 +709,7 @@
# 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
@@ -705,11 +769,10 @@
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
# CONFIG_FB_CLPS711X is not set
-# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_SA1100=y
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_E1355 is not set
+# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB2=y
@@ -728,12 +791,10 @@
# Sound
#
CONFIG_SOUND=y
-CONFIG_SOUND_ASSABET_UDA1341=m
-# CONFIG_SOUND_BITSY_UDA1341 is not set
-CONFIG_SOUND_SA1111_UDA1341=m
-# CONFIG_SOUND_SA1100SSP is not set
+# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_ES1370 is not set
@@ -742,16 +803,34 @@
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_SA1100=y
+# CONFIG_SOUND_UDA1341 is not set
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+# CONFIG_SOUND_H3600_UDA1341 is not set
+# CONFIG_SOUND_PANGOLIN_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+# CONFIG_SOUND_SA1100SSP is not set
# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_WAVEARTIST is not set
# CONFIG_SOUND_TVMIXER is not set
#
+# Multimedia Capabilities Port drivers
+#
+CONFIG_MCP=y
+CONFIG_MCP_SA1100=y
+CONFIG_MCP_UCB1200=y
+CONFIG_MCP_UCB1200_AUDIO=m
+CONFIG_MCP_UCB1200_TS=y
+
+#
# USB support
#
CONFIG_USB=y
@@ -762,6 +841,8 @@
#
# CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_LONG_TIMEOUT is not set
+# CONFIG_USB_LARGE_CONFIG is not set
#
# USB Controllers
@@ -769,7 +850,7 @@
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
CONFIG_USB_OHCI=y
-CONFIG_USB_OHCI_NOPCI=y
+CONFIG_USB_OHCI_SA1111=y
#
# USB Device Class drivers
@@ -777,6 +858,14 @@
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
@@ -784,6 +873,7 @@
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=y
+# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_WACOM is not set
#
@@ -793,24 +883,23 @@
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_SCANNER is not set
# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
#
# USB Network adaptors
#
-# CONFIG_USB_PLUSB is not set
# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
-# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_USBNET is not set
#
@@ -822,11 +911,36 @@
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
#
-# USB misc drivers
+# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
#
# Bluetooth support
@@ -840,7 +954,9 @@
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_SLAB is not set
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_NO_PGT_CACHE is not set
# CONFIG_DEBUG_LL is not set
# CONFIG_DEBUG_DC21285_PORT is not set
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/pangolin linux/arch/arm/def-configs/pangolin
--- v2.4.13/linux/arch/arm/def-configs/pangolin Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/pangolin Thu Oct 25 13:53:45 2001
@@ -1,11 +1,13 @@
#
-# Automatically generated make config: don't edit
+# Automatically generated by make menuconfig: don't edit
#
CONFIG_ARM=y
# CONFIG_EISA is not set
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
#
# Code maturity level options
@@ -23,24 +25,22 @@
#
# System Type
#
+# CONFIG_ARCH_ANAKIN is not set
# CONFIG_ARCH_ARCA5K is not set
# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_RPC is not set
CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_SHARK is not set
#
# Archimedes/A5000 Implementations
#
-
-#
-# Archimedes/A5000 Implementations (select only ONE)
-#
# CONFIG_ARCH_ARC is not set
# CONFIG_ARCH_A5K is not set
@@ -62,14 +62,20 @@
# CONFIG_SA1100_CERF is not set
# CONFIG_SA1100_BITSY is not set
# CONFIG_SA1100_EXTENEX1 is not set
+# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
+# CONFIG_SA1100_ITSY is not set
# CONFIG_SA1100_LART is not set
# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_OMNIMETER is not set
CONFIG_SA1100_PANGOLIN=y
+CONFIG_SA1100_PANGOLIN_PCMCIA_IDE=y
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_PFS168 is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
@@ -77,8 +83,6 @@
# CONFIG_SA1100_USB is not set
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
-# CONFIG_SA1100_FREQUENCY_SCALE is not set
-# CONFIG_SA1100_VOLTAGE_SCALE is not set
#
# CLPS711X/EP721X Implementations
@@ -90,10 +94,6 @@
# CONFIG_FOOTBRIDGE_ADDIN is not set
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
-
-#
-# Processor Type
-#
# CONFIG_CPU_32v3 is not set
CONFIG_CPU_32v4=y
# CONFIG_CPU_ARM610 is not set
@@ -104,18 +104,15 @@
# CONFIG_CPU_SA110 is not set
CONFIG_CPU_SA1100=y
CONFIG_DISCONTIGMEM=y
+# CONFIG_CPU_BIG_ENDIAN is not set
#
# General setup
#
-
-#
-# Please ensure that you have read the help on the next option
-#
-# CONFIG_ANGELBOOT is not set
# CONFIG_PCI is not set
# CONFIG_ISA is not set
# CONFIG_ISA_DMA is not set
+# CONFIG_CPU_FREQ is not set
CONFIG_HOTPLUG=y
#
@@ -130,20 +127,20 @@
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_FASTFPE is not set
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PM is not set
+# CONFIG_APM is not set
# CONFIG_ARTHUR is not set
CONFIG_CMDLINE="keepinitrd"
# CONFIG_PFS168_CMDLINE is not set
# CONFIG_LEDS is not set
CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_UCB1200 is not set
#
# Parallel port support
@@ -155,62 +152,84 @@
#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_BOOTLDR_PARTS is not set
+# 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
#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC1000 is not set
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOCPROBE is not set
-
-#
-# RAM/ROM Device Drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_MTDRAM is not set
-
-#
-# Linearly Mapped Flash Device Drivers
+# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_CFI_B1 is not set
+# CONFIG_MTD_CFI_B2 is not set
+CONFIG_MTD_CFI_B4=y
+# CONFIG_MTD_CFI_I1 is not set
+# CONFIG_MTD_CFI_I2 is not set
+CONFIG_MTD_CFI_I4=y
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_AMDSTD is not set
# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_SUN_UFLASH is not set
# CONFIG_MTD_NORA is not set
# CONFIG_MTD_PNC2000 is not set
# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_TQM8XXL is not set
# CONFIG_MTD_SC520CDP is not set
-# CONFIG_MTD_SBC_MEDIAGX is not set
+# CONFIG_MTD_NETSC520 is not set
+# CONFIG_MTD_SBC_GXX is not set
# CONFIG_MTD_ELAN_104NC is not set
CONFIG_MTD_SA1100=y
+# CONFIG_MTD_SA1100_REDBOOT_PARTITIONS is not set
+# CONFIG_MTD_SA1100_BOOTLDR_PARTITIONS is not set
# CONFIG_MTD_DC21285 is not set
# CONFIG_MTD_IQ80310 is not set
-# CONFIG_MTD_CSTM_CFI_JEDEC is not set
-# CONFIG_MTD_JEDEC is not set
+# CONFIG_MTD_DBOX2 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_CFI_FLAGADM is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SOLUTIONENGINE is not set
# CONFIG_MTD_MIXMEM is not set
# CONFIG_MTD_OCTAGON is not set
# CONFIG_MTD_VMAX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_L440GX is not set
#
-# NAND Flash Device Drivers
+# Self-contained MTD device drivers
#
-# CONFIG_MTD_NAND is not set
-# CONFIG_MTD_NAND_SPIA is not set
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_LART is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
#
-# User Modules And Translation Layers
+# NAND Flash Device Drivers
#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+# CONFIG_MTD_NAND is not set
#
# Plug and Play configuration
@@ -264,10 +283,6 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
-
-#
-#
-#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_DECNET is not set
@@ -295,22 +310,29 @@
# ARCnet devices
#
# CONFIG_ARCNET is not set
-CONFIG_DUMMY=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
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
+CONFIG_NET_VENDOR_SMC=y
+# CONFIG_WD80x3 is not set
+# CONFIG_ULTRAMCA is not set
+# CONFIG_ULTRA is not set
+# CONFIG_ULTRA32 is not set
+CONFIG_SMC9194=y
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
@@ -319,11 +341,14 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
@@ -358,8 +383,12 @@
# CONFIG_PCMCIA_XIRC2PS is not set
# CONFIG_ARCNET_COM20020_CS is not set
# CONFIG_PCMCIA_IBMTR is not set
-# CONFIG_NET_PCMCIA_RADIO is not set
-CONFIG_PCMCIA_NETCARD=y
+CONFIG_NET_PCMCIA_RADIO=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_AIRONET4500_CS is not set
+CONFIG_PCMCIA_WVLAN=y
#
# Amateur Radio support
@@ -374,19 +403,15 @@
#
# ATA/IDE/MFM/RLL support
#
-CONFIG_IDE=y
+CONFIG_IDE=m
#
# IDE, ATA and ATAPI Block devices
#
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
+CONFIG_BLK_DEV_IDE=m
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_BLK_DEV_IDEDISK=m
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
@@ -397,15 +422,12 @@
# CONFIG_BLK_DEV_IDEDISK_WD is not set
# CONFIG_BLK_DEV_COMMERIAL is not set
# CONFIG_BLK_DEV_TIVO is not set
-CONFIG_BLK_DEV_IDECS=y
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_PANGOLIN is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
@@ -446,19 +468,31 @@
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
+# CONFIG_SERIAL_AMBA is not set
+# CONFIG_SERIAL_AMBA_CONSOLE is not set
+# CONFIG_SERIAL_CLPS711X is not set
+# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
CONFIG_SERIAL_SA1100=y
CONFIG_SERIAL_SA1100_CONSOLE=y
CONFIG_SA1100_DEFAULT_BAUDRATE=115200
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+# CONFIG_UCB1200 is not set
# CONFIG_TOUCHSCREEN_UCB1200 is not set
+# CONFIG_AUDIO_UCB1200 is not set
+# CONFIG_ADC_UCB1200 is not set
# CONFIG_TOUCHSCREEN_BITSY is not set
CONFIG_PROFILER=y
# CONFIG_PFS168_SPI is not set
# CONFIG_PFS168_DTMF is not set
# CONFIG_PFS168_MISC is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
#
# I2C support
@@ -475,10 +509,6 @@
# Joysticks
#
# CONFIG_JOYSTICK is not set
-
-#
-# Input core support is needed for joysticks
-#
# CONFIG_QIC02_TAPE is not set
#
@@ -503,7 +533,6 @@
#
# PCMCIA character devices
#
-# CONFIG_PCMCIA_SERIAL_CS is not set
#
# Multimedia devices
@@ -532,10 +561,12 @@
CONFIG_JFFS_FS_VERBOSE=0
# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y
+# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -549,7 +580,6 @@
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
@@ -604,11 +634,13 @@
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
CONFIG_NLS_CODEPAGE_950=y
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
@@ -616,11 +648,12 @@
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
#
@@ -628,7 +661,6 @@
#
CONFIG_PC_KEYMAP=y
# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
#
# Frame-buffer support
@@ -640,12 +672,14 @@
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_SA1100 is not set
CONFIG_FB_MQ200=y
+# CONFIG_FB_ANAKIN is not set
+# CONFIG_FB_E1355 is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_FBCON_ADVANCED=y
# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-# CONFIG_FBCON_CFB8 is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
# CONFIG_FBCON_CFB24 is not set
# CONFIG_FBCON_CFB32 is not set
@@ -670,8 +704,11 @@
# Sound
#
CONFIG_SOUND=y
-CONFIG_SOUND_UDA1341=y
-# CONFIG_SOUND_SA1100_SSP is not set
+# CONFIG_SOUND_ASSABET_UDA1341 is not set
+CONFIG_SOUND_PANGOLIN_UDA1341=y
+# CONFIG_SOUND_BITSY_UDA1341 is not set
+# CONFIG_SOUND_SA1111_UDA1341 is not set
+# CONFIG_SOUND_SA1100SSP is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
@@ -687,6 +724,7 @@
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
@@ -694,6 +732,11 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
#
# Kernel hacking
diff -u --recursive --new-file v2.4.13/linux/arch/arm/def-configs/shark linux/arch/arm/def-configs/shark
--- v2.4.13/linux/arch/arm/def-configs/shark Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/def-configs/shark Thu Oct 25 13:53:45 2001
@@ -8,6 +8,7 @@
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+# CONFIG_GENERIC_BUST_SPINLOCK is not set
#
# Code maturity level options
@@ -62,13 +63,15 @@
#
# CONFIG_SA1100_ASSABET is not set
# CONFIG_ASSABET_NEPONSET is not set
+# CONFIG_SA1100_ADSBITSY is not set
# CONFIG_SA1100_BRUTUS is not set
# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_EXTENEX1 is not set
# CONFIG_SA1100_FLEXANET is not set
# CONFIG_SA1100_FREEBIRD is not set
# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_GRAPHICSMASTER is not set
# CONFIG_SA1100_JORNADA720 is not set
# CONFIG_SA1100_HUW_WEBPANEL is not set
# CONFIG_SA1100_ITSY is not set
@@ -78,6 +81,7 @@
# CONFIG_SA1100_PANGOLIN is not set
# CONFIG_SA1100_PLEB is not set
# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_PFS168 is not set
# CONFIG_SA1100_VICTOR is not set
# CONFIG_SA1100_XP860 is not set
@@ -86,7 +90,12 @@
#
# CLPS711X/EP721X Implementations
#
+# CONFIG_ARCH_CDB89712 is not set
+# CONFIG_ARCH_CLEP7312 is not set
+# CONFIG_ARCH_EDB7211 is not set
# CONFIG_ARCH_P720T is not set
+# CONFIG_ARCH_EP7211 is not set
+# CONFIG_ARCH_EP7212 is not set
# CONFIG_ARCH_ACORN is not set
# CONFIG_FOOTBRIDGE is not set
# CONFIG_FOOTBRIDGE_HOST is not set
@@ -106,6 +115,7 @@
# CONFIG_CPU_ARM1020 is not set
CONFIG_CPU_SA110=y
# CONFIG_CPU_SA1100 is not set
+# CONFIG_ARM_THUMB is not set
# CONFIG_DISCONTIGMEM is not set
#
@@ -121,6 +131,10 @@
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
+
+#
+# At least one math emulation must be selected
+#
# CONFIG_FPE_NWFPE is not set
CONFIG_FPE_FASTFPE=y
CONFIG_KCORE_ELF=y
@@ -140,12 +154,15 @@
#
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
+CONFIG_PARPORT_PC_CML1=y
+# CONFIG_PARPORT_SERIAL is not set
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_ARC is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
# CONFIG_PARPORT_ATARI is not set
+# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_SUNBPP is not set
# CONFIG_PARPORT_OTHER is not set
# CONFIG_PARPORT_1284 is not set
@@ -155,6 +172,7 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
+# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -180,6 +198,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -262,8 +281,6 @@
# CONFIG_APRICOT is not set
CONFIG_CS89x0=y
# CONFIG_TULIP is not set
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
@@ -290,8 +307,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -374,6 +392,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -411,6 +432,7 @@
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
@@ -449,7 +471,7 @@
# CONFIG_SCSI_DEBUG is not set
#
-# IEEE 1394 (FireWire) support
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
# CONFIG_IEEE1394 is not set
@@ -472,6 +494,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Character devices
@@ -482,17 +508,29 @@
CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_SERIAL_21285 is not set
-# CONFIG_SERIAL_21285_OLD is not set
-# CONFIG_SERIAL_21285_CONSOLE is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_ANAKIN is not set
+# CONFIG_SERIAL_ANAKIN_CONSOLE is not set
# CONFIG_SERIAL_AMBA is not set
# CONFIG_SERIAL_AMBA_CONSOLE is not set
# CONFIG_SERIAL_CLPS711X is not set
# CONFIG_SERIAL_CLPS711X_CONSOLE is not set
+# CONFIG_SERIAL_21285 is not set
+# CONFIG_SERIAL_21285_OLD is not set
+# CONFIG_SERIAL_21285_CONSOLE is not set
# CONFIG_SERIAL_SA1100 is not set
# CONFIG_SERIAL_SA1100_CONSOLE is not set
# CONFIG_SERIAL_8250 is not set
# CONFIG_SERIAL_8250_CONSOLE is not set
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_MANY_PORTS is not set
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_MULTIPORT is not set
+# CONFIG_SERIAL_8250_HUB6 is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
CONFIG_PRINTER=m
@@ -505,6 +543,19 @@
# CONFIG_I2C is not set
#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+# CONFIG_L3_ALGOBIT is not set
+# CONFIG_L3_BIT_SA1100_GPIO is not set
+
+#
+# Other L3 adapters
+#
+# CONFIG_L3_SA1111 is not set
+# CONFIG_BIT_SA1100_GPIO is not set
+
+#
# Mice
#
# CONFIG_BUSMOUSE is not set
@@ -516,7 +567,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -533,6 +588,7 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -540,6 +596,7 @@
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
#
# Multimedia devices
@@ -554,11 +611,16 @@
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BFS_FS is not set
+# CONFIG_CMS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
# CONFIG_UMSDOS_FS is not set
@@ -571,8 +633,9 @@
# CONFIG_RAMFS is not set
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
-# CONFIG_VXFS_FS is not set
+# CONFIG_FREEVXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
@@ -595,6 +658,7 @@
# Network File Systems
#
# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_ROOT_NFS is not set
@@ -612,6 +676,8 @@
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
@@ -627,6 +693,7 @@
# 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
@@ -689,17 +756,19 @@
# CONFIG_FB_RIVA is not set
# CONFIG_FB_CLGEN is not set
# CONFIG_FB_PM2 is not set
+# CONFIG_FB_PM3 is not set
# CONFIG_FB_ACORN is not set
+# CONFIG_FB_ANAKIN is not set
# CONFIG_FB_CLPS711X is not set
-CONFIG_FB_CYBER2000=y
# CONFIG_FB_SA1100 is not set
-# CONFIG_FB_ANAKIN is not set
-# CONFIG_FB_E1355 is not set
+CONFIG_FB_CYBER2000=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
# CONFIG_FB_SIS is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
@@ -714,8 +783,10 @@
# Sound
#
CONFIG_SOUND=m
+# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_CS4281 is not set
# CONFIG_SOUND_ES1370 is not set
@@ -724,6 +795,7 @@
# CONFIG_SOUND_MAESTRO is not set
# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
@@ -764,9 +836,117 @@
# CONFIG_SOUND_TVMIXER is not set
#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+# CONFIG_MCP_SA1100 is not set
+# CONFIG_MCP_UCB1200 is not set
+# CONFIG_MCP_UCB1200_AUDIO is not set
+# CONFIG_MCP_UCB1200_TS is not set
+
+#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+# CONFIG_USB_OHCI_SA1111 is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PLUSB is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# Miscellaneous USB drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_ID75 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/arm/kernel/Makefile linux/arch/arm/kernel/Makefile
--- v2.4.13/linux/arch/arm/kernel/Makefile Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/kernel/Makefile Thu Oct 25 13:53:45 2001
@@ -42,7 +42,7 @@
no-irq-arch := $(CONFIG_ARCH_INTEGRATOR) $(CONFIG_ARCH_CLPS711X) \
$(CONFIG_FOOTBRIDGE) $(CONFIG_ARCH_EBSA110) \
- $(CONFIG_ARCH_SA1100)
+ $(CONFIG_ARCH_SA1100) $(CONFIG_ARCH_CAMELOT)
ifneq ($(findstring y,$(no-irq-arch)),y)
obj-y += irq-arch.o
diff -u --recursive --new-file v2.4.13/linux/arch/arm/kernel/debug-armv.S linux/arch/arm/kernel/debug-armv.S
--- v2.4.13/linux/arch/arm/kernel/debug-armv.S Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/kernel/debug-armv.S Thu Oct 25 13:53:45 2001
@@ -333,6 +333,37 @@
bne 1001b
.endm
+#elif defined(CONFIG_ARCH_CAMELOT)
+
+#include
+#define UART00_TYPE
+#include
+
+ .macro addruart,rx
+ mrc p15, 0, \rx, c1, c0
+ tst \rx, #1 @ MMU enabled?
+ ldr \rx, =EXC_UART00_BASE @ physical base address
+ orrne \rx, \rx, #0xff000000 @ virtual base
+ orrne \rx, \rx, #0x00f00000
+ .endm
+
+ .macro senduart,rd,rx
+ str \rd, [\rx, #UART_TD(0)]
+ .endm
+
+ .macro waituart,rd,rx
+1001: ldr \rd, [\rx, #UART_TSR(0)]
+ and \rd, \rd, #UART_TSR_TX_LEVEL_MSK
+ cmp \rd, #15
+ beq 1001b
+ .endm
+
+ .macro busyuart,rd,rx
+1001: ldr \rd, [\rx, #UART_TSR(0)]
+ ands \rd, \rd, #UART_TSR_TX_LEVEL_MSK
+ bne 1001b
+ .endm
+
#else
#error Unknown architecture
#endif
diff -u --recursive --new-file v2.4.13/linux/arch/arm/kernel/entry-armv.S linux/arch/arm/kernel/entry-armv.S
--- v2.4.13/linux/arch/arm/kernel/entry-armv.S Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/kernel/entry-armv.S Thu Oct 25 13:53:45 2001
@@ -16,6 +16,7 @@
#include
#include "entry-header.S"
+
#ifdef IOC_BASE
/* IOC / IOMD based hardware */
#include
@@ -494,6 +495,27 @@
addeq \irqnr, \irqnr, #1
moveq \stat, \stat, lsr #1
tst \stat, #1 @ bit 0 should be set
+ .endm
+
+ .macro irq_prio_table
+ .endm
+
+#elif defined (CONFIG_ARCH_CAMELOT)
+#include
+#undef IRQ_MODE /* same name defined in asm/proc/ptrace.h */
+#include
+
+ .macro disable_fiq
+ .endm
+
+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
+
+ ldr \irqstat, =INT_ID(IO_ADDRESS(EXC_INT_CTRL00_BASE))
+ ldr \irqnr,[\irqstat]
+ cmp \irqnr,#0
+ subne \irqnr,\irqnr,#1
+
+
.endm
.macro irq_prio_table
diff -u --recursive --new-file v2.4.13/linux/arch/arm/lib/backtrace.S linux/arch/arm/lib/backtrace.S
--- v2.4.13/linux/arch/arm/lib/backtrace.S Thu Apr 12 12:20:31 2001
+++ linux/arch/arm/lib/backtrace.S Thu Oct 25 13:53:45 2001
@@ -44,33 +44,33 @@
1: moveq r0, #-2
LOADREGS(eqfd, sp!, {r4 - r8, pc})
-2: stmfd sp!, {pc} @ calculate offset of PC in STMIA instruction
+2: stmfd sp!, {pc} @ calculate offset of PC in STMIA instruction
ldr r0, [sp], #4
adr r1, 2b - 4
sub offset, r0, r1
-3: tst frame, mask @ Check for address exceptions...
+3: tst frame, mask @ Check for address exceptions...
bne 1b
- ldmda frame, {r0, r1, r2, r3} @ fp, sp, lr, pc
+1001: ldmda frame, {r0, r1, r2, r3} @ fp, sp, lr, pc
mov next, r0
- sub save, r3, offset @ Correct PC for prefetching
+ sub save, r3, offset @ Correct PC for prefetching
bic save, save, mask
adr r0, .Lfe
mov r1, save
bic r2, r2, mask
- bl SYMBOL_NAME(printk)
+ bl SYMBOL_NAME(printk) @ print pc and link register
sub r0, frame, #16
- ldr r1, [save, #4]
+1002: ldr r1, [save, #4] @ get instruction at function+4
mov r3, r1, lsr #10
ldr r2, .Ldsi+4
teq r3, r2 @ Check for stmia sp!, {args}
addeq save, save, #4 @ next instruction
bleq .Ldumpstm
- ldr r1, [save, #4] @ Get 'stmia sp!, {rlist, fp, ip, lr, pc}' instruction
+1003: ldr r1, [save, #4] @ Get 'stmia sp!, {rlist, fp, ip, lr, pc}' instruction
mov r3, r1, lsr #10
ldr r2, .Ldsi
teq r3, r2
@@ -82,6 +82,24 @@
bne 3b
LOADREGS(fd, sp!, {r4 - r8, pc})
+/*
+ * Fixup for LDMDB
+ */
+ .section .fixup,"ax"
+ .align 0
+1004: ldr r0, =.Lbad
+ mov r1, frame
+ bl SYMBOL_NAME(printk)
+ LOADREGS(fd, sp!, {r4 - r8, pc})
+ .ltorg
+ .previous
+
+ .section __ex_table,"a"
+ .align 3
+ .long 1001b, 1004b
+ .long 1002b, 1004b
+ .long 1003b, 1004b
+ .previous
#define instr r4
#define reg r5
@@ -115,6 +133,7 @@
.Lfe: .asciz "Function entered at [<%p>] from [<%p>]\n"
.Lfp: .asciz " r%d = %08X%c"
.Lcr: .asciz "\n"
+.Lbad: .asciz "Backtrace aborted due to bad frame pointer <%p>\n"
.align
.Ldsi: .word 0x00e92dd8 >> 2
.word 0x00e92d00 >> 2
diff -u --recursive --new-file v2.4.13/linux/arch/arm/lib/io-acorn.S linux/arch/arm/lib/io-acorn.S
--- v2.4.13/linux/arch/arm/lib/io-acorn.S Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/lib/io-acorn.S Thu Oct 25 13:53:45 2001
@@ -54,39 +54,6 @@
mov r1, lr
b SYMBOL_NAME(printk)
-/* Purpose: read a block of data from a hardware register to memory.
- * Proto : void insw(int from_port, void *to, int len_in_words);
- * Notes : increment to, 'to' must be 16-bit aligned
- */
-
-ENTRY(insw)
- addr r0
- teq r2, #0
- bne __raw_readsw
- RETINSTR(mov, pc, lr)
-
-ENTRY(insb)
- addr r0
- teq r2, #0
- bne __raw_readsb
- RETINSTR(mov, pc, lr)
-
-@ Purpose: write a block of data from memory to a hardware register.
-@ Proto : outsw(int to_reg, void *from, int len_in_words);
-@ Notes : increments from
-
-ENTRY(outsw)
- addr r0
- teq r2, #0
- bne __raw_writesw
- RETINSTR(mov, pc, lr)
-
-ENTRY(outsb)
- addr r0
- teq r2, #0
- bne __raw_writesb
- RETINSTR(mov, pc, lr)
-
@ Purpose: write a memc register
@ Proto : void memc_write(int register, int value);
@ Returns: nothing
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/Makefile linux/arch/arm/mach-epxa10db/Makefile
--- v2.4.13/linux/arch/arm/mach-epxa10db/Makefile Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/Makefile Thu Oct 25 13:53:45 2001
@@ -0,0 +1,22 @@
+#
+# Makefile for the linux kernel.
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+
+USE_STANDARD_AS_RULE := true
+
+O_TARGET := epxa10db.o
+
+# Object file lists.
+
+obj-y := arch.o irq.o mm.o time.o
+obj-m :=
+obj-n :=
+obj- :=
+
+export-objs :=
+
+
+include $(TOPDIR)/Rules.make
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/arch.c linux/arch/arm/mach-epxa10db/arch.c
--- v2.4.13/linux/arch/arm/mach-epxa10db/arch.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/arch.c Thu Oct 25 13:53:45 2001
@@ -0,0 +1,62 @@
+/*
+ * linux/arch/arm/mach-epxa10db/arch.c
+ *
+ * Copyright (C) 2000 Deep Blue Solutions Ltd
+ * Copyright (C) 2001 Altera Corporation
+ *
+ * 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
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+
+extern void epxa10db_map_io(void);
+extern void epxa10db_init_irq(void);
+
+
+static void __init
+epxa10db_fixup(struct machine_desc *desc, struct param_struct *params,
+ char **cmdline, struct meminfo *mi)
+{
+
+ mi->nr_banks = 1;
+ mi->bank[0].start = 0;
+ mi->bank[0].size = (32*1024*1024);
+ mi->bank[0].node = 0;
+
+/*
+ ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
+ setup_ramdisk( 1, 0, 0, 8192 );
+ setup_initrd(0xc0200000, 6*1024*1024);
+*/
+}
+
+MACHINE_START(CAMELOT, "Altera Epxa10db")
+ MAINTAINER("Altera Corporation")
+ BOOT_MEM(0x00000000, 0x7fffc000, 0xffffc000)
+ FIXUP(epxa10db_fixup)
+ MAPIO(epxa10db_map_io)
+ INITIRQ(epxa10db_init_irq)
+
+MACHINE_END
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/dma.c linux/arch/arm/mach-epxa10db/dma.c
--- v2.4.13/linux/arch/arm/mach-epxa10db/dma.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/dma.c Thu Oct 25 13:53:45 2001
@@ -0,0 +1,36 @@
+/*
+ * linux/arch/arm/mach-epxa10db/dma.c
+ *
+ * Copyright (C) 1999 ARM Limited
+ * Copyright (C) 2000 Deep Blue Solutions Ltd
+ *
+ * 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
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+void __init arch_dma_init(dma_t *dma)
+{
+}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/irq.c linux/arch/arm/mach-epxa10db/irq.c
--- v2.4.13/linux/arch/arm/mach-epxa10db/irq.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/irq.c Thu Oct 25 13:53:45 2001
@@ -0,0 +1,70 @@
+/*
+ * linux/arch/arm/mach-epxa10db/irq.c
+ *
+ * Copyright (C) 2001 Altera Corporation
+ *
+ * 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
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+static void mask_irq(unsigned int irq)
+{
+ __raw_writel(1 << irq, INT_MC(IO_ADDRESS(EXC_INT_CTRL00_BASE)));
+}
+
+static void unmask_irq(unsigned int irq)
+{
+ __raw_writel(1 << irq, INT_MS(IO_ADDRESS(EXC_INT_CTRL00_BASE)));
+}
+
+void __init epxa10db_init_irq(void)
+{
+ unsigned int i;
+
+ /*
+ * This bit sets up the interrupt controller using
+ * the 6 PLD interrupts mode (the default) each
+ * irqs is assigned a priority which is the same
+ * as its interrupt number. This scheme is used because
+ * its easy, but you may want to change it depending
+ * on the contents of your PLD
+ */
+
+ __raw_writel(3,INT_MODE(IO_ADDRESS(EXC_INT_CTRL00_BASE)));
+ for (i = 0; i < NR_IRQS; i++){
+ __raw_writel(i+1, INT_PRIORITY_P0(IO_ADDRESS(EXC_INT_CTRL00_BASE)) + (4*i));
+ }
+
+
+ for (i = 0; i < NR_IRQS; i++) {
+
+ irq_desc[i].valid = 1;
+ irq_desc[i].probe_ok = 1;
+ irq_desc[i].mask_ack = mask_irq;
+ irq_desc[i].mask = mask_irq;
+ irq_desc[i].unmask = unmask_irq;
+ }
+
+ /* Disable all interrupt */
+ __raw_writel(-1,INT_MC(IO_ADDRESS(EXC_INT_CTRL00_BASE)));
+
+}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/mm.c linux/arch/arm/mach-epxa10db/mm.c
--- v2.4.13/linux/arch/arm/mach-epxa10db/mm.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/mm.c Thu Oct 25 13:53:45 2001
@@ -0,0 +1,48 @@
+/*
+ * linux/arch/arm/mach-epxa10db/mm.c
+ *
+ * MM routines for Altera'a Epxa10db board
+ *
+ * Copyright (C) 2001 Altera Corporation
+ *
+ * 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
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+
+/* Page table mapping for I/O region */
+
+static struct map_desc epxa10db_io_desc[] __initdata = {
+ { IO_ADDRESS(EXC_REGISTERS_BASE), EXC_REGISTERS_BASE, SZ_16K , DOMAIN_IO, 0, 1},
+{IO_ADDRESS(EXC_PLD_BLOCK0_BASE), EXC_PLD_BLOCK0_BASE, SZ_16K , DOMAIN_IO, 0, 1},
+{IO_ADDRESS(EXC_PLD_BLOCK1_BASE), EXC_PLD_BLOCK1_BASE, SZ_16K , DOMAIN_IO, 0, 1},
+{IO_ADDRESS(EXC_PLD_BLOCK2_BASE), EXC_PLD_BLOCK2_BASE, SZ_16K , DOMAIN_IO, 0, 1},
+{IO_ADDRESS(EXC_PLD_BLOCK3_BASE), EXC_PLD_BLOCK3_BASE, SZ_16K , DOMAIN_IO, 0, 1},
+{ FLASH_VADDR(EXC_EBI_BLOCK0_BASE), EXC_EBI_BLOCK0_BASE, SZ_16M , DOMAIN_IO, 0, 1},
+ LAST_DESC
+};
+
+void __init epxa10db_map_io(void)
+{
+ iotable_init(epxa10db_io_desc);
+}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-epxa10db/time.c linux/arch/arm/mach-epxa10db/time.c
--- v2.4.13/linux/arch/arm/mach-epxa10db/time.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-epxa10db/time.c Thu Oct 25 13:53:45 2001
@@ -0,0 +1,33 @@
+/*
+ * linux/arch/arm/mach-epxa10db/time.c
+ *
+ * Copyright (C) 2000 Deep Blue Solutions
+ * Copyright (C) 2001 Altera Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include
+#include
+#include
+
+#include
+
+
+
+extern int (*set_rtc)(void);
+
+static int epxa10db_set_rtc(void)
+{
+ return 1;
+}
+
+static int epxa10db_rtc_init(void)
+{
+ set_rtc = epxa10db_set_rtc;
+
+ return 0;
+}
+
+__initcall(epxa10db_rtc_init);
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/Makefile linux/arch/arm/mach-sa1100/Makefile
--- v2.4.13/linux/arch/arm/mach-sa1100/Makefile Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/Makefile Thu Oct 25 13:53:45 2001
@@ -14,9 +14,12 @@
obj-n :=
obj- :=
-export-objs := assabet.o h3600.o freebird.o huw_webpanel.o yopy.o \
- generic.o hwtimer.o irq.o usb_ctl.o usb_recv.o usb_send.o \
- dma-sa1100.o dma-sa1111.o pcipool.o sa1111-pcibuf.o
+export-objs := assabet.o dma-sa1100.o dma-sa1111.o freebird.o generic.o \
+ h3600.o huw_webpanel.o irq.o pcipool.o sa1111-pcibuf.o \
+ yopy.o
+
+# These aren't present yet, and prevents a plain -ac kernel building.
+# hwtimer.o usb_ctl.o usb_recv.o usb_send.o
# Common support (must be linked before board specific support)
obj-y += generic.o irq.o dma-sa1100.o
@@ -27,6 +30,7 @@
# We link the CPU support next, so that RAM timings can be tuned.
ifeq ($(CONFIG_CPU_FREQ),y)
obj-$(CONFIG_SA1100_ASSABET) += cpu-sa1110.o
+obj-$(CONFIG_SA1100_CERF) += cpu-sa1110.o
obj-$(CONFIG_SA1100_LART) += cpu-sa1100.o
endif
@@ -63,14 +67,19 @@
# LEDs support
leds-y := leds.o
+leds-$(CONFIG_SA1100_ADSBITSY) += leds-adsbitsy.o
leds-$(CONFIG_SA1100_ASSABET) += leds-assabet.o
leds-$(CONFIG_SA1100_BRUTUS) += leds-brutus.o
leds-$(CONFIG_SA1100_CERF) += leds-cerf.o
leds-$(CONFIG_SA1100_FLEXANET) += leds-flexanet.o
leds-$(CONFIG_SA1100_GRAPHICSCLIENT) += leds-graphicsclient.o
+leds-$(CONFIG_SA1100_GRAPHICSMASTER) += leds-graphicsmaster.o
leds-$(CONFIG_SA1100_LART) += leds-lart.o
leds-$(CONFIG_SA1100_PFS168) += leds-pfs168.o
-leds-$(CONFIG_SA1100_GRAPHICSMASTER) += leds-graphicsmaster.o
+leds-$(CONFIG_SA1100_SIMPAD) += leds-simpad.o
obj-$(CONFIG_LEDS) += $(leds-y)
+
+# Miscelaneous functions
+obj-$(CONFIG_PM) += pm.o sleep.o
include $(TOPDIR)/Rules.make
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/assabet.c linux/arch/arm/mach-sa1100/assabet.c
--- v2.4.13/linux/arch/arm/mach-sa1100/assabet.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/assabet.c Thu Oct 25 13:53:45 2001
@@ -17,6 +17,7 @@
#include
#include
#include
+#include
#include
#include
@@ -26,13 +27,13 @@
#include
#include
#include
-#include
+#include
#include "generic.h"
-unsigned long BCR_value = BCR_DB1110;
-unsigned long SCR_value = SCR_INIT;
+unsigned long BCR_value = ASSABET_BCR_DB1110;
+unsigned long SCR_value = ASSABET_SCR_INIT;
EXPORT_SYMBOL(BCR_value);
EXPORT_SYMBOL(SCR_value);
@@ -46,7 +47,7 @@
* This must precede any driver calls to BCR_set()
* or BCR_clear().
*/
- BCR = BCR_value = BCR_DB1111;
+ ASSABET_BCR = BCR_value = ASSABET_BCR_DB1111;
NCR_0 = 0;
#ifndef CONFIG_ASSABET_NEPONSET
@@ -68,7 +69,7 @@
*/
static void __init map_sa1100_gpio_regs( void )
{
- unsigned long phys = _GPLR & PMD_MASK;
+ unsigned long phys = __PREG(GPLR) & PMD_MASK;
unsigned long virt = io_p2v(phys);
int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO);
pmd_t pmd;
@@ -185,17 +186,17 @@
{
if (port->mapbase == _Ser1UTCR0) {
if (state)
- BCR_clear(BCR_RS232EN);
+ ASSABET_BCR_clear(ASSABET_BCR_RS232EN);
else
- BCR_set(BCR_RS232EN);
+ ASSABET_BCR_set(ASSABET_BCR_RS232EN);
}
}
/*
* Note! this can be called from IRQ context.
- * FIXME: You _need_ to handle BCR carefully, which doesn't
+ * FIXME: You _need_ to handle ASSABET_BCR carefully, which doesn't
* happen at the moment. Suggest putting interrupt save/restore
- * in BCR_set/clear.
+ * in ASSABET_BCR_set/clear.
*
* NB: Assabet uses COM_RTS and COM_DTR for both UART1 (com port)
* and UART3 (radio module). We only handle them for UART1 here.
@@ -206,43 +207,43 @@
u_int set = 0, clear = 0;
if (mctrl & TIOCM_RTS)
- set |= BCR_COM_RTS;
+ set |= ASSABET_BCR_COM_RTS;
else
- clear |= BCR_COM_RTS;
+ clear |= ASSABET_BCR_COM_RTS;
if (mctrl & TIOCM_DTR)
- set |= BCR_COM_DTR;
+ set |= ASSABET_BCR_COM_DTR;
else
- clear |= BCR_COM_DTR;
+ clear |= ASSABET_BCR_COM_DTR;
- BCR_clear(clear);
- BCR_set(set);
+ ASSABET_BCR_clear(clear);
+ ASSABET_BCR_set(set);
}
}
static int assabet_get_mctrl(struct uart_port *port)
{
u_int ret = 0;
- u_int bsr = BSR;
+ u_int bsr = ASSABET_BSR;
/* need 2 reads to read current value */
- bsr = BSR;
+ bsr = ASSABET_BSR;
if (port->mapbase == _Ser1UTCR0) {
- if (bsr & BSR_COM_DCD)
+ if (bsr & ASSABET_BSR_COM_DCD)
ret |= TIOCM_CD;
- if (bsr & BSR_COM_CTS)
+ if (bsr & ASSABET_BSR_COM_CTS)
ret |= TIOCM_CTS;
- if (bsr & BSR_COM_DSR)
+ if (bsr & ASSABET_BSR_COM_DSR)
ret |= TIOCM_DSR;
} else if (port->mapbase == _Ser3UTCR0) {
- if (bsr & BSR_RAD_DCD)
+ if (bsr & ASSABET_BSR_RAD_DCD)
ret |= TIOCM_CD;
- if (bsr & BSR_RAD_CTS)
+ if (bsr & ASSABET_BSR_RAD_CTS)
ret |= TIOCM_CTS;
- if (bsr & BSR_RAD_DSR)
+ if (bsr & ASSABET_BSR_RAD_DSR)
ret |= TIOCM_DSR;
- if (bsr & BSR_RAD_RI)
+ if (bsr & ASSABET_BSR_RAD_RI)
ret |= TIOCM_RI;
} else {
ret = TIOCM_CD | TIOCM_CTS | TIOCM_DSR;
@@ -304,6 +305,18 @@
*/
GPDR |= GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
GPCR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
+
+ /*
+ * Set up registers for sleep mode.
+ */
+ PWER = PWER_GPIO0;
+ PGSR = 0;
+ PCFR = 0;
+
+ /*
+ * Clear all possible wakeup reasons.
+ */
+ RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR;
}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/cerf.c linux/arch/arm/mach-sa1100/cerf.c
--- v2.4.13/linux/arch/arm/mach-sa1100/cerf.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/cerf.c Thu Oct 25 13:53:46 2001
@@ -16,31 +16,60 @@
#include "generic.h"
+static void __init cerf_init_irq (void)
+{
+ sa1100_init_irq();
+
+ /* Need to register these as rising edge interrupts
+ * For standard 16550 serial driver support
+ * Basically - I copied it from pfs168.c :)
+ */
+#ifdef CONFIG_SA1100_CERF_CPLD
+ set_GPIO_IRQ_edge(GPIO_GPIO(3), GPIO_RISING_EDGE); /* PDA Full serial port */
+ set_GPIO_IRQ_edge(GPIO_GPIO(2), GPIO_RISING_EDGE); /* PDA Bluetooth */
+ GPDR &= ~(GPIO_GPIO(3)); /* Set the direction of serial port GPIO pin to in */
+ GPDR &= ~(GPIO_GPIO(2)); /* Set the direction of bluetooth GPIO pin to in */
+#endif /* CONFIG_SA1100_CERF_CPLD */
+}
+
static void __init
fixup_cerf(struct machine_desc *desc, struct param_struct *params,
char **cmdline, struct meminfo *mi)
{
-#ifdef CONFIG_SA1100_CERF_32MB
- // 32MB RAM
+#if defined(CONFIG_SA1100_CERF_64MB)
+ // 64MB RAM
+ SET_BANK( 0, 0xc0000000, 64*1024*1024 );
+ mi->nr_banks = 1;
+#elif defined(CONFIG_SA1100_CERF_32MB) // 32MB RAM
SET_BANK( 0, 0xc0000000, 32*1024*1024 );
mi->nr_banks = 1;
-#else
- // 16Meg Ram.
+#elif defined(CONFIG_SA1100_CERF_16MB) // 16Meg Ram.
SET_BANK( 0, 0xc0000000, 8*1024*1024 );
- SET_BANK( 1, 0xc8000000, 8*1024*1024 ); // comment this out for 8MB Cerfs
+ SET_BANK( 1, 0xc8000000, 8*1024*1024 );
mi->nr_banks = 2;
+#elif defined(CONFIG_SA1100_CERF_8MB)
+ // 8Meg Ram.
+ SET_BANK( 0, 0xc0000000, 8*1024*1024 );
+ mi->nr_banks = 1;
+#else
+ #error "Undefined memory size for Cerfboard."
#endif
- ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
- setup_ramdisk(1, 0, 0, 8192);
- // Save 2Meg for RAMDisk
- setup_initrd(0xc0500000, 3*1024*1024);
+// ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
+// setup_ramdisk(1, 0, 0, 8192);
+// // Save 2Meg for RAMDisk
+// setup_initrd(0xc0500000, 3*1024*1024);
}
static struct map_desc cerf_io_desc[] __initdata = {
- /* virtual physical length domain r w c b */
- { 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
- { 0xf0000000, 0x08000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Crystal Chip */
+ /* virtual physical length domain r w c b */
+ { 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
+ { 0xf0000000, 0x08000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Crystal Ethernet Chip */
+#ifdef CONFIG_SA1100_CERF_CPLD
+ { 0xf1000000, 0x40000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* CPLD Chip */
+ { 0xf2000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* CerfPDA Bluetooth */
+ { 0xf3000000, 0x18000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* CerfPDA Serial */
+#endif
LAST_DESC
};
@@ -49,14 +78,19 @@
sa1100_map_io();
iotable_init(cerf_io_desc);
- sa1100_register_uart(0, 3);
+ sa1100_register_uart(0, 3);
+#ifdef CONFIG_SA1100_CERF_IRDA_ENABLED
sa1100_register_uart(1, 1);
+#else
+ sa1100_register_uart(1, 2);
+ sa1100_register_uart(2, 1);
+#endif
}
-MACHINE_START(CERF, "Intrinsyc CerfBoard")
- MAINTAINER("Pieter Truter")
+MACHINE_START(CERF, "Intrinsyc's Cerf Family of Products")
+ MAINTAINER("support@intrinsyc.com")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
FIXUP(fixup_cerf)
MAPIO(cerf_map_io)
- INITIRQ(sa1100_init_irq)
+ INITIRQ(cerf_init_irq)
MACHINE_END
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/dma-sa1100.c linux/arch/arm/mach-sa1100/dma-sa1100.c
--- v2.4.13/linux/arch/arm/mach-sa1100/dma-sa1100.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/dma-sa1100.c Thu Oct 25 13:53:46 2001
@@ -611,7 +611,7 @@
int channel;
for (channel = 0; channel < SA1100_DMA_CHANNELS; channel++) {
dma_chan[channel].regs =
- (dma_regs_t *) io_p2v(_DDAR(channel));
+ (dma_regs_t *) &DDAR(channel);
dma_chan[channel].irq = IRQ_DMA0 + channel;
}
return 0;
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/dma-sa1111.c linux/arch/arm/mach-sa1100/dma-sa1111.c
--- v2.4.13/linux/arch/arm/mach-sa1100/dma-sa1111.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/dma-sa1111.c Thu Oct 25 13:53:46 2001
@@ -23,7 +23,6 @@
#include
#include
-
// #define DEBUG
#ifdef DEBUG
#define DPRINTK( s, arg... ) printk( "dma<%s>: " s, dma->device_id , ##arg )
@@ -305,7 +304,7 @@
* SDRAM bank 1 on Neponset). The default configuration selects
* Assabet, so any address in bank 1 is necessarily invalid.
*/
- if((machine_is_assabet() || machine_is_pfs168()) && addr >= _DRAMBnk1)
+ if((machine_is_assabet() || machine_is_pfs168()) && addr >= 0xc8000000)
return -1;
/* The bug only applies to buffers located more than one megabyte
@@ -340,7 +339,7 @@
return -1;
break;
default:
- printk(KERN_ERR "%s(): invalid SMCR DRAC value 0%o\n",
+ printk(KERN_ERR "%s(): invalid SMCR DRAC value 0%lo\n",
__FUNCTION__, FExtr(SBI_SMCR, SMCR_DRAC));
return -1;
}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/freebird.c linux/arch/arm/mach-sa1100/freebird.c
--- v2.4.13/linux/arch/arm/mach-sa1100/freebird.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/freebird.c Thu Oct 25 13:53:46 2001
@@ -50,6 +50,11 @@
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
+
+ /* Set up sleep mode registers */
+ PWER = 0x1;
+ PGSR = 0x0;
+ PCFR = PCFR_OPDE | PCFR_FP | PCFR_FS;
}
MACHINE_START(FREEBIRD, "Freebird-HPC-1.1")
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/graphicsclient.c linux/arch/arm/mach-sa1100/graphicsclient.c
--- v2.4.13/linux/arch/arm/mach-sa1100/graphicsclient.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/graphicsclient.c Thu Oct 25 13:53:46 2001
@@ -23,6 +23,7 @@
#include
#include
#include
+#include
#include
@@ -143,11 +144,185 @@
LAST_DESC
};
+static struct gc_uart_ctrl_data_t gc_uart_ctrl_data[] = {
+ { GPIO_GC_UART0_CTS, 0, NULL,NULL },
+ { GPIO_GC_UART1_CTS, 0, NULL,NULL },
+ { GPIO_GC_UART2_CTS, 0, NULL,NULL }
+};
+
+static void
+graphicsclient_cts_intr(int irq, void *dev_id, struct pt_regs *regs)
+{
+ struct gc_uart_ctrl_data_t * uart_data = (struct gc_uart_ctrl_data_t *)dev_id;
+ int cts = !(GPLR & uart_data->cts_gpio);
+
+ /* NOTE: I supose that we will no get any interrupt
+ if the GPIO is not changed, so maybe
+ the cts_prev_state can be removed ... */
+ if (cts != uart_data->cts_prev_state) {
+ uart_data->cts_prev_state = cts;
+
+ uart_handle_cts_change(uart_data->info, cts);
+ }
+}
+
+static int
+graphicsclient_register_cts_intr(int gpio, int irq,
+ struct gc_uart_ctrl_data_t *uart_data)
+{
+ int ret = 0;
+
+ set_GPIO_IRQ_edge(gpio, GPIO_BOTH_EDGES);
+
+ ret = request_irq(irq, graphicsclient_cts_intr,
+ 0, "GC RS232 CTS", uart_data);
+ if (ret) {
+ printk(KERN_ERR "uart_open: failed to register CTS irq (%d)\n",
+ ret);
+ free_irq(irq, uart_data);
+ }
+
+ return ret;
+}
+
+static int
+graphicsclient_uart_open(struct uart_port *port, struct uart_info *info)
+{
+ int ret = 0;
+
+ if (port->mapbase == _Ser1UTCR0) {
+ Ser1SDCR0 |= SDCR0_UART;
+ /* Set RTS Output */
+ GPDR |= GPIO_GC_UART0_RTS;
+ GPSR = GPIO_GC_UART0_RTS;
+
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GC_UART0_CTS;
+
+ gc_uart_ctrl_data[0].cts_prev_state = 0;
+ gc_uart_ctrl_data[0].info = info;
+ gc_uart_ctrl_data[0].port = port;
+
+ /* register uart0 CTS irq */
+ ret = graphicsclient_register_cts_intr(GPIO_GC_UART0_CTS,
+ IRQ_GC_UART0_CTS,
+ &gc_uart_ctrl_data[0]);
+ } else if (port->mapbase == _Ser2UTCR0) {
+ Ser2UTCR4 = Ser2HSCR0 = 0;
+ /* Set RTS Output */
+ GPDR |= GPIO_GC_UART1_RTS;
+ GPSR = GPIO_GC_UART1_RTS;
+
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GC_UART1_RTS;
+
+ gc_uart_ctrl_data[1].cts_prev_state = 0;
+ gc_uart_ctrl_data[1].info = info;
+ gc_uart_ctrl_data[1].port = port;
+
+ /* register uart1 CTS irq */
+ ret = graphicsclient_register_cts_intr(GPIO_GC_UART1_CTS,
+ IRQ_GC_UART1_CTS,
+ &gc_uart_ctrl_data[1]);
+ } else if (port->mapbase == _Ser3UTCR0) {
+ /* Set RTS Output */
+ GPDR |= GPIO_GC_UART2_RTS;
+ GPSR = GPIO_GC_UART2_RTS;
+
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GC_UART2_RTS;
+
+ gc_uart_ctrl_data[2].cts_prev_state = 0;
+ gc_uart_ctrl_data[2].info = info;
+ gc_uart_ctrl_data[2].port = port;
+
+ /* register uart2 CTS irq */
+ ret = graphicsclient_register_cts_intr(GPIO_GC_UART2_CTS,
+ IRQ_GC_UART2_CTS,
+ &gc_uart_ctrl_data[2]);
+ }
+ return ret;
+}
+
+static int
+graphicsclient_uart_close(struct uart_port *port, struct uart_info *info)
+{
+ if (port->mapbase == _Ser1UTCR0) {
+ free_irq(IRQ_GC_UART0_CTS, &gc_uart_ctrl_data[0]);
+ } else if (port->mapbase == _Ser2UTCR0) {
+ free_irq(IRQ_GC_UART1_CTS, &gc_uart_ctrl_data[1]);
+ } else if (port->mapbase == _Ser3UTCR0) {
+ free_irq(IRQ_GC_UART2_CTS, &gc_uart_ctrl_data[2]);
+ }
+
+ return 0;
+}
+
+static int graphicsclient_get_mctrl(struct uart_port *port)
+{
+ int result = TIOCM_CD | TIOCM_DSR;
+
+ if (port->mapbase == _Ser1UTCR0) {
+ if (!(GPLR & GPIO_GC_UART0_CTS))
+ result |= TIOCM_CTS;
+ } else if (port->mapbase == _Ser2UTCR0) {
+ if (!(GPLR & GPIO_GC_UART1_CTS))
+ result |= TIOCM_CTS;
+ } else if (port->mapbase == _Ser3UTCR0) {
+ if (!(GPLR & GPIO_GC_UART2_CTS))
+ result |= TIOCM_CTS;
+ } else {
+ result = TIOCM_CTS;
+ }
+
+ return result;
+}
+
+static void graphicsclient_set_mctrl(struct uart_port *port, u_int mctrl)
+{
+ if (port->mapbase == _Ser1UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GC_UART0_RTS;
+ else
+ GPSR = GPIO_GC_UART0_RTS;
+ } else if (port->mapbase == _Ser2UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GC_UART1_RTS;
+ else
+ GPSR = GPIO_GC_UART1_RTS;
+ } else if (port->mapbase == _Ser3UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GC_UART2_RTS;
+ else
+ GPSR = GPIO_GC_UART2_RTS;
+ }
+}
+
+static void
+graphicsclient_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
+{
+ if (!state) {
+ /* make serial ports work ... */
+ Ser2UTCR4 = 0;
+ Ser2HSCR0 = 0;
+ Ser1SDCR0 |= SDCR0_UART;
+ }
+}
+
+static struct sa1100_port_fns graphicsclient_port_fns __initdata = {
+ open: graphicsclient_uart_open,
+ close: graphicsclient_uart_close,
+ get_mctrl: graphicsclient_get_mctrl,
+ set_mctrl: graphicsclient_set_mctrl,
+ pm: graphicsclient_uart_pm,
+};
+
static void __init graphicsclient_map_io(void)
{
sa1100_map_io();
iotable_init(graphicsclient_io_desc);
+ sa1100_register_uart_fns(&graphicsclient_port_fns);
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
sa1100_register_uart(2, 2);
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/graphicsmaster.c linux/arch/arm/mach-sa1100/graphicsmaster.c
--- v2.4.13/linux/arch/arm/mach-sa1100/graphicsmaster.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/graphicsmaster.c Thu Oct 25 13:53:46 2001
@@ -207,11 +207,100 @@
LAST_DESC
};
+static int graphicsmaster_uart_open(struct uart_port *port, struct uart_info *info)
+{
+ int ret = 0;
+
+ if (port->mapbase == _Ser1UTCR0) {
+ Ser1SDCR0 |= SDCR0_UART;
+ /* Set RTS Output */
+ GPSR = GPIO_GPIO15;
+ GPDR |= GPIO_GPIO15;
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GPIO14;
+ }
+ else if (port->mapbase == _Ser2UTCR0) {
+ Ser2UTCR4 = Ser2HSCR0 = 0;
+ /* Set RTS Output */
+ GPSR = GPIO_GPIO17;
+ GPDR |= GPIO_GPIO17;
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GPIO16;
+ }
+ else if (port->mapbase == _Ser3UTCR0) {
+ /* Set RTS Output */
+ GPSR = GPIO_GPIO19;
+ GPDR |= GPIO_GPIO19;
+ /* Set CTS Input */
+ GPDR &= ~GPIO_GPIO18;
+ }
+ return ret;
+}
+
+static int graphicsmaster_get_mctrl(struct uart_port *port)
+{
+ int result = TIOCM_CD | TIOCM_DSR;
+
+ if (port->mapbase == _Ser1UTCR0) {
+ if (!(GPLR & GPIO_GPIO14))
+ result |= TIOCM_CTS;
+ } else if (port->mapbase == _Ser2UTCR0) {
+ if (!(GPLR & GPIO_GPIO16))
+ result |= TIOCM_CTS;
+ } else if (port->mapbase == _Ser3UTCR0) {
+ if (!(GPLR & GPIO_GPIO17))
+ result |= TIOCM_CTS;
+ } else {
+ result = TIOCM_CTS;
+ }
+
+ return result;
+}
+
+static void graphicsmaster_set_mctrl(struct uart_port *port, u_int mctrl)
+{
+ if (port->mapbase == _Ser1UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GPIO15;
+ else
+ GPSR = GPIO_GPIO15;
+ } else if (port->mapbase == _Ser2UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GPIO17;
+ else
+ GPSR = GPIO_GPIO17;
+ } else if (port->mapbase == _Ser3UTCR0) {
+ if (mctrl & TIOCM_RTS)
+ GPCR = GPIO_GPIO19;
+ else
+ GPSR = GPIO_GPIO19;
+ }
+}
+
+static void
+graphicsmaster_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
+{
+ if (!state) {
+ /* make serial ports work ... */
+ Ser2UTCR4 = 0;
+ Ser2HSCR0 = 0;
+ Ser1SDCR0 |= SDCR0_UART;
+ }
+}
+
+static struct sa1100_port_fns graphicsmaster_port_fns __initdata = {
+ open: graphicsmaster_uart_open,
+ get_mctrl: graphicsmaster_get_mctrl,
+ set_mctrl: graphicsmaster_set_mctrl,
+ pm: graphicsmaster_uart_pm,
+};
+
static void __init graphicsmaster_map_io(void)
{
sa1100_map_io();
iotable_init(graphicsmaster_io_desc);
+ sa1100_register_uart_fns(&graphicsmaster_port_fns);
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1);
sa1100_register_uart(2, 2);
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/h3600.c linux/arch/arm/mach-sa1100/h3600.c
--- v2.4.13/linux/arch/arm/mach-sa1100/h3600.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/h3600.c Thu Oct 25 13:53:46 2001
@@ -27,14 +27,62 @@
static int h3600_egpio = EGPIO_H3600_RS232_ON;
+void init_h3600_egpio(void)
+{
+#ifdef CONFIG_IPAQ_H3100
+ int h3100_controls = (GPIO_H3100_BT_ON
+ | GPIO_H3100_QMUTE
+ | GPIO_H3100_LCD_3V_ON
+ | GPIO_H3100_AUD_ON
+ | GPIO_H3100_AUD_PWR_ON
+ | GPIO_H3100_IR_ON
+ | GPIO_H3100_IR_FSEL);
+ GPDR |= h3100_controls;
+ GPCR = h3100_controls;
+ GAFR = GPIO_SSP_CLK;
+#endif
+}
+
void clr_h3600_egpio(unsigned long x)
{
+#ifdef CONFIG_IPAQ_H3100
+ unsigned long gpcr = 0;
+ if (x&EGPIO_H3600_QMUTE)
+ gpcr |= GPIO_H3100_QMUTE;
+ if (x&EGPIO_H3600_LCD_ON)
+ gpcr |= GPIO_H3100_LCD_3V_ON;
+ if (x&EGPIO_H3600_AUD_AMP_ON)
+ gpcr |= GPIO_H3100_AUD_ON;
+ if (x&EGPIO_H3600_AUD_PWR_ON)
+ gpcr |= GPIO_H3100_AUD_PWR_ON;
+ if (x&EGPIO_H3600_IR_ON)
+ gpcr |= GPIO_H3100_IR_ON;
+ if (x&EGPIO_H3600_IR_FSEL)
+ gpcr |= GPIO_H3100_IR_FSEL;
+ GPCR = gpcr;
+#endif
h3600_egpio &= ~x;
H3600_EGPIO = h3600_egpio;
}
void set_h3600_egpio(unsigned long x)
{
+#ifdef CONFIG_IPAQ_H3100
+ unsigned long gpsr = 0;
+ if (x&EGPIO_H3600_QMUTE)
+ gpsr |= GPIO_H3100_QMUTE;
+ if (x&EGPIO_H3600_LCD_ON)
+ gpsr |= GPIO_H3100_LCD_3V_ON;
+ if (x&EGPIO_H3600_AUD_AMP_ON)
+ gpsr |= GPIO_H3100_AUD_ON;
+ if (x&EGPIO_H3600_AUD_PWR_ON)
+ gpsr |= GPIO_H3100_AUD_PWR_ON;
+ if (x&EGPIO_H3600_IR_ON)
+ gpsr |= GPIO_H3100_IR_ON;
+ if (x&EGPIO_H3600_IR_FSEL)
+ gpsr |= GPIO_H3100_IR_FSEL;
+ GPSR = gpsr;
+#endif
h3600_egpio |= x;
H3600_EGPIO = h3600_egpio;
}
@@ -153,8 +201,8 @@
/* virtual physical length domain r w c b */
{ 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
{ 0xf0000000, 0x49000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* EGPIO 0 */
- { 0xf1000000, 0x10000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 2 */
- { 0xf3000000, 0x40000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 4 */
+ { 0xf1000000, 0x10000000, 0x02800000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 2 */
+ { 0xf3800000, 0x40000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* static memory bank 4 */
LAST_DESC
};
@@ -166,7 +214,7 @@
sa1100_register_uart_fns(&h3600_port_fns);
sa1100_register_uart(0, 3);
sa1100_register_uart(1, 1); /* isn't this one driven elsewhere? */
- sa1100_register_uart(2, 2);
+ init_h3600_egpio();
/*
* Default GPIO settings.
@@ -179,6 +227,11 @@
*/
PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
+
+ /* Configure suspend conditions */
+ PGSR = 0;
+ PWER = 0x1 | (1 << 31);
+ PCFR = PCFR_OPDE | PCFR_FP | PCFR_FS;
}
MACHINE_START(H3600, "Compaq iPAQ")
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds-adsbitsy.c linux/arch/arm/mach-sa1100/leds-adsbitsy.c
--- v2.4.13/linux/arch/arm/mach-sa1100/leds-adsbitsy.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-sa1100/leds-adsbitsy.c Thu Oct 25 13:53:46 2001
@@ -0,0 +1,96 @@
+/*
+ * linux/arch/arm/mach-sa1100/leds-adsbitsy.c
+ *
+ * ADS Bitsy LED
+ * 7/25/01 Woojung Huh
+ */
+#include
+#include
+
+#include
+#include
+#include
+
+#include "leds.h"
+
+
+#define LED_STATE_ENABLED 1
+#define LED_STATE_CLAIMED 2
+
+static unsigned int led_state;
+static unsigned int hw_led_state;
+
+#define LED_TIMER GPIO_GPIO20 /* green heartbeat */
+
+#define LED_MASK (LED_TIMER)
+
+void adsbitsy_leds_event(led_event_t evt)
+{
+ unsigned long flags;
+
+ save_flags_cli(flags);
+
+ switch (evt) {
+ case led_start:
+ hw_led_state = 0; /* gc leds are positive logic */
+ led_state = LED_STATE_ENABLED;
+ break;
+
+ case led_stop:
+ led_state &= ~LED_STATE_ENABLED;
+ break;
+
+ case led_claim:
+ led_state |= LED_STATE_CLAIMED;
+ hw_led_state = LED_MASK;
+ break;
+
+ case led_release:
+ led_state &= ~LED_STATE_CLAIMED;
+ hw_led_state = LED_MASK;
+ break;
+
+#ifdef CONFIG_LEDS_TIMER
+ case led_timer:
+ if (!(led_state & LED_STATE_CLAIMED))
+ hw_led_state ^= LED_TIMER;
+ break;
+#endif
+
+#ifdef CONFIG_LEDS_CPU
+ case led_idle_start:
+ break;
+
+ case led_idle_end:
+ break;
+#endif
+
+ case led_green_on:
+ break;
+
+ case led_green_off:
+ break;
+
+ case led_amber_on:
+ break;
+
+ case led_amber_off:
+ break;
+
+ case led_red_on:
+ break;
+
+ case led_red_off:
+ break;
+
+ default:
+ break;
+ }
+
+ if (led_state & LED_STATE_ENABLED) {
+ GPSR = hw_led_state;
+ GPCR = hw_led_state ^ LED_MASK;
+ }
+
+ restore_flags(flags);
+}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds-assabet.c linux/arch/arm/mach-sa1100/leds-assabet.c
--- v2.4.13/linux/arch/arm/mach-sa1100/leds-assabet.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/leds-assabet.c Thu Oct 25 13:53:46 2001
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include "leds.h"
@@ -25,7 +26,7 @@
static unsigned int led_state;
static unsigned int hw_led_state;
-#define BCR_LED_MASK (BCR_LED_GREEN | BCR_LED_RED)
+#define ASSABET_BCR_LED_MASK (ASSABET_BCR_LED_GREEN | ASSABET_BCR_LED_RED)
void assabet_leds_event(led_event_t evt)
{
@@ -35,7 +36,7 @@
switch (evt) {
case led_start:
- hw_led_state = BCR_LED_RED | BCR_LED_GREEN;
+ hw_led_state = ASSABET_BCR_LED_RED | ASSABET_BCR_LED_GREEN;
led_state = LED_STATE_ENABLED;
break;
@@ -45,30 +46,30 @@
case led_claim:
led_state |= LED_STATE_CLAIMED;
- hw_led_state = BCR_LED_RED | BCR_LED_GREEN;
+ hw_led_state = ASSABET_BCR_LED_RED | ASSABET_BCR_LED_GREEN;
break;
case led_release:
led_state &= ~LED_STATE_CLAIMED;
- hw_led_state = BCR_LED_RED | BCR_LED_GREEN;
+ hw_led_state = ASSABET_BCR_LED_RED | ASSABET_BCR_LED_GREEN;
break;
#ifdef CONFIG_LEDS_TIMER
case led_timer:
if (!(led_state & LED_STATE_CLAIMED))
- hw_led_state ^= BCR_LED_GREEN;
+ hw_led_state ^= ASSABET_BCR_LED_GREEN;
break;
#endif
#ifdef CONFIG_LEDS_CPU
case led_idle_start:
if (!(led_state & LED_STATE_CLAIMED))
- hw_led_state |= BCR_LED_RED;
+ hw_led_state |= ASSABET_BCR_LED_RED;
break;
case led_idle_end:
if (!(led_state & LED_STATE_CLAIMED))
- hw_led_state &= ~BCR_LED_RED;
+ hw_led_state &= ~ASSABET_BCR_LED_RED;
break;
#endif
@@ -77,12 +78,12 @@
case led_green_on:
if (led_state & LED_STATE_CLAIMED)
- hw_led_state &= ~BCR_LED_GREEN;
+ hw_led_state &= ~ASSABET_BCR_LED_GREEN;
break;
case led_green_off:
if (led_state & LED_STATE_CLAIMED)
- hw_led_state |= BCR_LED_GREEN;
+ hw_led_state |= ASSABET_BCR_LED_GREEN;
break;
case led_amber_on:
@@ -93,12 +94,12 @@
case led_red_on:
if (led_state & LED_STATE_CLAIMED)
- hw_led_state &= ~BCR_LED_RED;
+ hw_led_state &= ~ASSABET_BCR_LED_RED;
break;
case led_red_off:
if (led_state & LED_STATE_CLAIMED)
- hw_led_state |= BCR_LED_RED;
+ hw_led_state |= ASSABET_BCR_LED_RED;
break;
default:
@@ -106,7 +107,8 @@
}
if (led_state & LED_STATE_ENABLED)
- BCR = BCR_value = (BCR_value & ~BCR_LED_MASK) | hw_led_state;
+ ASSABET_BCR = BCR_value = (BCR_value & ~ASSABET_BCR_LED_MASK) |
+ hw_led_state;
local_irq_restore(flags);
}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds-cerf.c linux/arch/arm/mach-sa1100/leds-cerf.c
--- v2.4.13/linux/arch/arm/mach-sa1100/leds-cerf.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/leds-cerf.c Thu Oct 25 13:53:46 2001
@@ -19,11 +19,23 @@
static unsigned int led_state;
static unsigned int hw_led_state;
+#ifdef CONFIG_SA1100_CERF_CPLD
+
+#define LED_D0 GPIO_GPIO(0)
+#define LED_D1 GPIO_GPIO(0)
+#define LED_D2 GPIO_GPIO(0)
+#define LED_D3 GPIO_GPIO(0)
+#define LED_MASK (LED_D0|LED_D1|LED_D2|LED_D3)
+
+#else
+
#define LED_D0 GPIO_GPIO(0)
#define LED_D1 GPIO_GPIO(1)
#define LED_D2 GPIO_GPIO(2)
#define LED_D3 GPIO_GPIO(3)
#define LED_MASK (LED_D0|LED_D1|LED_D2|LED_D3)
+
+#endif
void cerf_leds_event(led_event_t evt)
{
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds-simpad.c linux/arch/arm/mach-sa1100/leds-simpad.c
--- v2.4.13/linux/arch/arm/mach-sa1100/leds-simpad.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/leds-simpad.c Thu Oct 25 13:53:46 2001
@@ -22,13 +22,16 @@
#define LED_GREEN (1)
#define LED_MASK (1)
+extern void set_cs3_bit(int value);
+extern void clear_cs3_bit(int value);
+
void simpad_leds_event(led_event_t evt)
{
unsigned long flags;
//local_irq_save(flags);
- switch (evt)
+ switch (evt)
{
case led_start:
hw_led_state = LED_GREEN;
@@ -94,8 +97,9 @@
}
if (led_state & LED_STATE_ENABLED)
- cs3_shadow |= LED2_ON;
-
+ set_cs3_bit(LED2_ON);
+ else
+ clear_cs3_bit(LED2_ON);
//local_irq_restore(flags);
}
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds.c linux/arch/arm/mach-sa1100/leds.c
--- v2.4.13/linux/arch/arm/mach-sa1100/leds.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/leds.c Thu Oct 25 13:53:46 2001
@@ -32,6 +32,8 @@
leds_event = pfs168_leds_event;
if (machine_is_graphicsmaster())
leds_event = graphicsmaster_leds_event;
+ if (machine_is_adsbitsy())
+ leds_event = adsbitsy_leds_event;
leds_event(led_start);
return 0;
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/leds.h linux/arch/arm/mach-sa1100/leds.h
--- v2.4.13/linux/arch/arm/mach-sa1100/leds.h Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/leds.h Thu Oct 25 13:53:46 2001
@@ -6,3 +6,4 @@
extern void lart_leds_event(led_event_t evt);
extern void pfs168_leds_event(led_event_t evt);
extern void graphicsmaster_leds_event(led_event_t evt);
+extern void adsbitsy_leds_event(led_event_t evt);
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/neponset.c linux/arch/arm/mach-sa1100/neponset.c
--- v2.4.13/linux/arch/arm/mach-sa1100/neponset.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mach-sa1100/neponset.c Thu Oct 25 13:53:46 2001
@@ -7,6 +7,7 @@
#include
#include
#include
+#include
#include
#include
@@ -14,7 +15,7 @@
#include
#include
#include
-#include
+#include
#include "sa1111.h"
@@ -68,8 +69,8 @@
irq = NEPONSET_USAR_IRQ;
irq_desc[irq].valid = 1;
irq_desc[irq].probe_ok = 1;
- set_GPIO_IRQ_edge( GPIO_NEP_IRQ, GPIO_RISING_EDGE );
- setup_arm_irq( IRQ_GPIO_NEP_IRQ, &neponset_irq );
+ set_GPIO_IRQ_edge(ASSABET_GPIO_NEP_IRQ, GPIO_RISING_EDGE);
+ setup_arm_irq(ASSABET_IRQ_GPIO_NEP_IRQ, &neponset_irq);
}
static int __init neponset_init(void)
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/pm.c linux/arch/arm/mach-sa1100/pm.c
--- v2.4.13/linux/arch/arm/mach-sa1100/pm.c Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-sa1100/pm.c Thu Oct 25 13:53:46 2001
@@ -0,0 +1,183 @@
+/*
+ * SA1100 Power Management Routines
+ *
+ * Copyright (c) 2001 Cliff Brake
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License.
+ *
+ * History:
+ *
+ * 2001-02-06: Cliff Brake Initial code
+ *
+ * 2001-02-25: Sukjae Cho &
+ * Chester Kuo
+ * Save more value for the resume function! Support
+ * Bitsy/Assabet/Freebird board
+ *
+ * 2001-08-29: Nicolas Pitre
+ * Cleaned up, pushed platform dependent stuff
+ * in the platform specific files.
+ */
+
+/*
+ * Debug macros
+ */
+#define DEBUG 1
+#ifdef DEBUG
+# define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
+#else
+# define DPRINTK(fmt, args...)
+#endif
+
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include "sleep.h"
+
+extern void sa1100_cpu_suspend(void);
+extern void sa1100_cpu_resume(void);
+
+extern unsigned long *sleep_save; /* virtual address */
+extern unsigned long sleep_save_p; /* physical address */
+
+#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x
+#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x]
+
+int pm_do_suspend(void)
+{
+ int retval;
+
+ /* set up pointer to sleep parameters */
+ sleep_save = kmalloc (SLEEP_SAVE_SIZE*sizeof(long), GFP_ATOMIC);
+ if (!sleep_save)
+ return -ENOMEM;
+ sleep_save_p = virt_to_phys(sleep_save);
+
+ retval = pm_send_all(PM_SUSPEND, (void *)2);
+ if (retval) {
+ kfree(sleep_save);
+ return retval;
+ }
+
+ cli();
+
+ /* preserve current time */
+ RCNR = xtime.tv_sec;
+
+ /* save vital registers */
+ SAVE(OSCR);
+ SAVE(OSMR0);
+ SAVE(OSMR1);
+ SAVE(OSMR2);
+ SAVE(OSMR3);
+ SAVE(OIER);
+
+ SAVE(GPDR);
+ SAVE(GRER);
+ SAVE(GFER);
+ SAVE(GAFR);
+
+ SAVE(PPDR);
+ SAVE(PPSR);
+ SAVE(PPAR);
+ SAVE(PSDR);
+
+ SAVE(Ser1SDCR0);
+
+ SAVE(ICMR);
+
+ /* ... maybe a global variable initialized by arch code to set this? */
+ GRER = PWER;
+ GFER = 0;
+ GEDR = GEDR;
+
+ /* Clear previous reset status */
+ RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR;
+
+ /* set resume return address */
+ PSPR = virt_to_phys(sa1100_cpu_resume);
+
+ /* go zzz */
+ sa1100_cpu_suspend();
+
+ /* ensure not to come back here if it wasn't intended */
+ PSPR = 0;
+
+ DPRINTK("*** made it back from resume\n");
+
+ /* restore registers */
+ RESTORE(GPDR);
+ RESTORE(GRER);
+ RESTORE(GFER);
+ RESTORE(GAFR);
+
+ /* clear any edge detect bit */
+ GEDR = GEDR;
+
+ RESTORE(PPDR);
+ RESTORE(PPSR);
+ RESTORE(PPAR);
+ RESTORE(PSDR);
+
+ RESTORE(Ser1SDCR0);
+
+ PSSR = PSSR_PH;
+
+ RESTORE(OSMR0);
+ RESTORE(OSMR1);
+ RESTORE(OSMR2);
+ RESTORE(OSMR3);
+ RESTORE(OSCR);
+ RESTORE(OIER);
+
+ ICLR = 0;
+ ICCR = 1;
+ RESTORE(ICMR);
+
+ /* restore current time */
+ xtime.tv_sec = RCNR;
+
+ sti();
+
+ kfree (sleep_save);
+
+ retval = pm_send_all(PM_RESUME, (void *)0);
+ if (retval)
+ return retval;
+
+ return 0;
+}
+
+
+static struct ctl_table pm_table[] =
+{
+ {ACPI_S1_SLP_TYP, "suspend", NULL, 0, 0600, NULL, (proc_handler *)&pm_do_suspend},
+ {0}
+};
+
+static struct ctl_table pm_dir_table[] =
+{
+ {CTL_ACPI, "pm", NULL, 0, 0555, pm_table},
+ {0}
+};
+
+/*
+ * Initialize power interface
+ */
+static int __init pm_init(void)
+{
+ register_sysctl_table(pm_dir_table, 1);
+ return 0;
+}
+
+__initcall(pm_init);
+
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/simpad.c linux/arch/arm/mach-sa1100/simpad.c
--- v2.4.13/linux/arch/arm/mach-sa1100/simpad.c Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mach-sa1100/simpad.c Thu Oct 25 13:53:46 2001
@@ -8,6 +8,8 @@
#include
#include
#include
+#include
+#include
#include
#include
@@ -15,32 +17,46 @@
#include
#include
#include
+#include
#include "generic.h"
-void init_simpad_cs3()
+long cs3_shadow;
+
+static int __init simpad_init(void)
+{
+ PSPR = 0xc0008000;
+ GPDR &= ~GPIO_GPIO0;
+ cs3_shadow = (EN1 | EN0 | LED2_ON | DISPLAY_ON | RS232_ON |
+ ENABLE_5V | RESET_SIMCARD);
+ *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow;
+ return 0;
+}
+
+__initcall(simpad_init);
+
+long get_cs3_shadow()
{
- cs3_shadow =(DISPLAY_ON | RS232_ON | PCMCIA_BUFF_DIS | RESET_SIMCARD);
- printk("\nCall CS3 init:%x\n",cs3_shadow);
- *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow;
- cs3_shadow =(DISPLAY_ON| RS232_ON |RESET_SIMCARD);
+ return cs3_shadow;
}
-void PCMCIA_setbit(int value)
+void set_cs3_bit(int value)
{
- cs3_shadow |= value;
+ cs3_shadow |= value;
+ *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow;
}
-void PCMCIA_clearbit(int value)
+void clear_cs3_bit(int value)
{
- cs3_shadow &= ~value;
+ cs3_shadow &= ~value;
+ *(CS3BUSTYPE *)(CS3_BASE) = cs3_shadow;
}
static void __init
fixup_simpad(struct machine_desc *desc, struct param_struct *params,
char **cmdline, struct meminfo *mi)
{
-#ifdef CONFIG_SA1100_SIMPAD_64MB
+#ifdef CONFIG_SA1100_SIMPAD_DRAM_64MB /* DRAM */
SET_BANK( 0, 0xc0000000, 64*1024*1024 );
#else
SET_BANK( 0, 0xc0000000, 32*1024*1024 );
@@ -48,27 +64,109 @@
mi->nr_banks = 1;
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
setup_ramdisk( 1, 0, 0, 8192 );
- setup_initrd( __phys_to_virt(0xc0800000), 8*1024*1024 );
+ setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024 );
}
static struct map_desc simpad_io_desc[] __initdata = {
- /* virtual physical length domain r w c b */
- { 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0, neccessary for mtd */
- { 0xf2800000, 0x4b800000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* MQ200 */
+ /* virtual physical length domain r w c b */
+ { 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 1, 1, 0, 0 },
+ { 0xf2800000, 0x4b800000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* MQ200 */
{ 0xf1000000, 0x18000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* Paules CS3, write only */
LAST_DESC
};
+
+static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
+{
+ if (port->mapbase == (u_int)&Ser1UTCR0) {
+ if (state)
+ clear_cs3_bit(RS232_ON);
+ else
+ set_cs3_bit(RS232_ON);
+ }
+}
+
+static struct sa1100_port_fns simpad_port_fns __initdata = {
+ pm: simpad_uart_pm,
+};
+
static void __init simpad_map_io(void)
{
sa1100_map_io();
iotable_init(simpad_io_desc);
+#ifndef CONFIG_SERIAL_SA1100_OLD
+ //It is only possible to register 3 UART in serial_sa1100.c
sa1100_register_uart(0, 3);
- sa1100_register_uart(1, 1);
+ sa1100_register_uart(1, 1);
+#endif
+}
+
+#ifdef CONFIG_PROC_FS
+
+static char* name[]={
+ "VCC_5V_EN",
+ "VCC_3V_EN",
+ "EN1",
+ "EN0",
+ "DISPLAY_ON",
+ "PCMCIA_BUFF_DIS",
+ "MQ_RESET",
+ "PCMCIA_RESET",
+ "DECT_POWER_ON",
+ "IRDA_SD",
+ "RS232_ON",
+ "SD_MEDIAQ",
+ "LED2_ON",
+ "IRDA_MODE",
+ "ENABLE_5V",
+ "RESET_SIMCARD"
+};
+
+static int proc_cs3_read(char *page, char **start, off_t off,
+ int count, int *eof, void *data)
+{
+ char *p = page;
+ int len, i;
+
+ p += sprintf(p, "Chipselect3 : %x\n", cs3_shadow);
+ for (i = 0; i <= 15; i++) {
+ if(cs3_shadow & (1<read_proc = proc_cs3_read;
+ return 0;
+}
+
+static int __exit cs3_exit(void)
+{
+ if (proc_cs3)
+ remove_proc_entry( "cs3", 0);
+ return 0;
+}
+__initcall(cs3_init);
+#endif // CONFIG_PROC_FS
MACHINE_START(SIMPAD, "Simpad")
MAINTAINER("Juergen Messerer")
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/sleep.S linux/arch/arm/mach-sa1100/sleep.S
--- v2.4.13/linux/arch/arm/mach-sa1100/sleep.S Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-sa1100/sleep.S Thu Oct 25 13:53:46 2001
@@ -0,0 +1,238 @@
+/*
+ * SA11x0 Assembler Sleep/WakeUp Management Routines
+ *
+ * Copyright (c) 2001 Cliff Brake
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License.
+ *
+ * History:
+ *
+ * 2001-02-06: Cliff Brake Initial code
+ *
+ * 2001-08-29: Nicolas Pitre Simplified.
+ */
+
+#include
+#include
+#include
+#include "sleep.h"
+
+/*
+ * sa1100_cpu_suspend()
+ *
+ * Causes sa11x0 to enter sleep state
+ *
+ */
+
+ .text
+
+ENTRY(sleep_save) .word 0 @ virtual address of parameter array
+ENTRY(sleep_save_p) .word 0 @ physical address of parameter array
+
+ENTRY(sa1100_cpu_suspend)
+
+ @ save registers on stack
+ stmfd sp!, {r4 - r12, lr}
+
+ @ load virtual address for sleep_save array
+ ldr r4, sleep_save
+
+ @ save stack pointer
+ str sp, [r4, #(SLEEP_SAVE_SP*4)]
+
+ @ save coprocessor registers
+ mrc p15, 0, r1, c1, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R1*4)]
+ mrc p15, 0, r1, c2, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R2*4)]
+ mrc p15, 0, r1, c3, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R3*4)]
+ mrc p15, 0, r1, c5, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R5*4)]
+ mrc p15, 0, r1, c6, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R6*4)]
+ mrc p15, 0, r1, c13, c0, 0
+ str r1, [r4, #(SLEEP_SAVE_CP15_R13*4)]
+
+ @ clean data cache and invalidate WB
+ bl cpu_sa1100_cache_clean_invalidate_all
+
+ @ disable clock switching
+ mcr p15, 0, r1, c15, c2, 2
+
+ @ Adjust memory timing before lowering CPU clock
+ @ Clock speed adjustment without changing memory timing makes
+ @ CPU hang in some cases
+ ldr r0, =MDREFR
+ ldr r1, [r0]
+ orr r1, r1, #MDREFR_K1DB2
+ str r1, [r0]
+
+ @ delay 90us and set CPU PLL to lowest speed
+ @ fixes resume problem on high speed SA1110
+ mov r0, #90
+ bl SYMBOL_NAME(udelay)
+ ldr r0, =PPCR
+ mov r1, #0
+ str r1, [r0]
+ mov r0, #90
+ bl SYMBOL_NAME(udelay)
+
+
+/* setup up register contents for jump to page containing SA1110 SDRAM controller bug fix suspend code
+ *
+ * r0 points to MSC0 register
+ * r1 points to MSC1 register
+ * r2 points to MSC2 register
+ * r3 is MSC0 value
+ * r4 is MSC1 value
+ * r5 is MSC2 value
+ * r6 points to MDREFR register
+ * r7 is first MDREFR value
+ * r8 is second MDREFR value
+ * r9 is pointer to MDCNFG register
+ * r10 is MDCNFG value
+ * r11 is third MDREFR value
+ * r12 is pointer to PMCR register
+ * r13 is PMCR value (1)
+ *
+ */
+
+ ldr r0, =MSC0
+ ldr r1, =MSC1
+ ldr r2, =MSC2
+
+ ldr r3, [r0]
+ bic r3, r3, #FMsk(MSC_RT)
+ bic r3, r3, #FMsk(MSC_RT)<<16
+
+ ldr r4, [r1]
+ bic r4, r4, #FMsk(MSC_RT)
+ bic r4, r4, #FMsk(MSC_RT)<<16
+
+ ldr r5, [r2]
+ bic r5, r5, #FMsk(MSC_RT)
+ bic r5, r5, #FMsk(MSC_RT)<<16
+
+ ldr r6, =MDREFR
+
+ ldr r7, [r6]
+ bic r7, r7, #0x0000FF00
+ bic r7, r7, #0x000000F0
+ orr r8, r7, #MDREFR_SLFRSH
+
+ ldr r9, =MDCNFG
+ ldr r10, [r9]
+ bic r10, r10, #(MDCNFG_DE0+MDCNFG_DE1)
+ bic r10, r10, #(MDCNFG_DE2+MDCNFG_DE3)
+
+ bic r11, r8, #MDREFR_SLFRSH
+ bic r11, r11, #MDREFR_E1PIN
+
+ ldr r12, =PMCR
+
+ mov r13, #PMCR_SF
+
+ b sa1110_sdram_controller_fix
+
+ .align 5
+sa1110_sdram_controller_fix:
+
+ @ Step 1 clear RT field of all MSCx registers
+ str r3, [r0]
+ str r4, [r1]
+ str r5, [r2]
+
+ @ Step 2 clear DRI field in MDREFR
+ str r7, [r6]
+
+ @ Step 3 set SLFRSH bit in MDREFR
+ str r8, [r6]
+
+ @ Step 4 clear DE bis in MDCNFG
+ str r10, [r9]
+
+ @ Step 5 clear DRAM refresh control register
+ str r11, [r6]
+
+ @ Wow, now the hardware suspend request pins can be used, that makes them functional for
+ @ about 7 ns out of the entire time that the CPU is running!
+
+ @ Step 6 set force sleep bit in PMCR
+
+ str r13, [r12]
+
+20: b 20b @ loop waiting for sleep
+
+/*
+ * cpu_sa1100_resume()
+ *
+ * entry point from bootloader into kernel during resume
+ *
+ */
+
+ .align 5
+ENTRY(sa1100_cpu_resume)
+
+ @ set SVC, irqs off
+ mov r0, #I_BIT | MODE_SVC
+ msr cpsr_c, r0
+
+ @ load physical address of sleep_save
+ ldr r4, sleep_save_p
+
+ @ restore cp15_r3, domain id
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R3*4)]
+ mcr p15, 0, r1, c3, c0 ,0
+
+ @ restore cp15_r2, translation table base address
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R2*4)]
+ mcr p15, 0, r1, c2, c0 ,0
+
+ mov r1, #0
+ mcr p15, 0, r1, c8, c7, 0 @ flush I+D TLBs
+ mcr p15, 0, r1, c7, c7, 0 @ flush I&D cache
+
+ @ get saved cp15 r1 (control register)
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R1*4)]
+
+ @ get address to jump to after turning on MMU
+ ldr r2, =resume_after_mmu
+
+ cmp r2, #0
+
+ b resume_turn_on_mmu
+
+ .align 5
+resume_turn_on_mmu:
+
+ @ turn on mmu
+ mcr p15, 0, r1, c1, c0 ,0
+
+ @ jump to resume_after_mmu
+ mov pc, r2
+ nop
+ nop
+
+ .align 5
+resume_after_mmu:
+
+ @ load virtual address for sleep_save array
+ ldr r4, sleep_save
+
+ @ restore the rest of CPU state
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R13*4)]
+ mcr p15, 0, r1, c13, c0, 0
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R5*4)]
+ mcr p15, 0, r1, c5, c0 ,0
+ ldr r1, [r4, #(SLEEP_SAVE_CP15_R6*4)]
+ mcr p15, 0, r1, c6, c0 ,0
+
+ @ restore stack pointer
+ ldr sp, [r4, #(SLEEP_SAVE_SP*4)]
+
+ @ return to caller
+ ldmfd sp!, {r4 - r12, pc}
+
+
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-sa1100/sleep.h linux/arch/arm/mach-sa1100/sleep.h
--- v2.4.13/linux/arch/arm/mach-sa1100/sleep.h Wed Dec 31 16:00:00 1969
+++ linux/arch/arm/mach-sa1100/sleep.h Thu Oct 25 13:53:46 2001
@@ -0,0 +1,30 @@
+/*
+ * Offsets for register values preserved in RAM while in sleep mode
+ */
+
+#define SLEEP_SAVE_OSCR 0
+#define SLEEP_SAVE_OSMR0 1
+#define SLEEP_SAVE_OSMR1 2
+#define SLEEP_SAVE_OSMR2 3
+#define SLEEP_SAVE_OSMR3 4
+#define SLEEP_SAVE_OIER 5
+#define SLEEP_SAVE_GPDR 6
+#define SLEEP_SAVE_GRER 7
+#define SLEEP_SAVE_GFER 8
+#define SLEEP_SAVE_GAFR 9
+#define SLEEP_SAVE_PPDR 10
+#define SLEEP_SAVE_PPSR 11
+#define SLEEP_SAVE_PPAR 12
+#define SLEEP_SAVE_PSDR 13
+#define SLEEP_SAVE_Ser1SDCR0 14
+#define SLEEP_SAVE_ICMR 15
+#define SLEEP_SAVE_SP 16
+#define SLEEP_SAVE_CP15_R1 17
+#define SLEEP_SAVE_CP15_R2 18
+#define SLEEP_SAVE_CP15_R3 19
+#define SLEEP_SAVE_CP15_R5 20
+#define SLEEP_SAVE_CP15_R6 21
+#define SLEEP_SAVE_CP15_R13 22
+
+#define SLEEP_SAVE_SIZE 23
+
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-shark/dma.c linux/arch/arm/mach-shark/dma.c
--- v2.4.13/linux/arch/arm/mach-shark/dma.c Thu Apr 12 12:20:31 2001
+++ linux/arch/arm/mach-shark/dma.c Thu Oct 25 13:53:46 2001
@@ -1,7 +1,7 @@
/*
* linux/arch/arm/mach-shark/dma.c
*
- * by Alexander Schulz
+ * by Alexander Schulz
*
* derived from:
* arch/arm/kernel/dma-ebsa285.c
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-shark/leds.c linux/arch/arm/mach-shark/leds.c
--- v2.4.13/linux/arch/arm/mach-shark/leds.c Thu Apr 12 12:20:31 2001
+++ linux/arch/arm/mach-shark/leds.c Thu Oct 25 13:53:46 2001
@@ -1,6 +1,6 @@
/*
* arch/arm/kernel/leds-shark.c
- * by Alexander Schulz
+ * by Alexander Schulz
*
* derived from:
* arch/arm/kernel/leds-footbridge.c
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mach-shark/mm.c linux/arch/arm/mach-shark/mm.c
--- v2.4.13/linux/arch/arm/mach-shark/mm.c Thu Apr 12 12:20:31 2001
+++ linux/arch/arm/mach-shark/mm.c Thu Oct 25 13:53:46 2001
@@ -1,7 +1,7 @@
/*
* linux/arch/arm/mach-shark/mm.c
*
- * by Alexander Schulz
+ * by Alexander Schulz
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mm/fault-armv.c linux/arch/arm/mm/fault-armv.c
--- v2.4.13/linux/arch/arm/mm/fault-armv.c Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/mm/fault-armv.c Thu Oct 25 13:53:46 2001
@@ -514,7 +514,7 @@
* Oops, we didn't handle the instruction.
*/
printk(KERN_ERR "Alignment trap: not handling instruction "
- "%08lx at [<%08lx>]", instr, instrptr);
+ "%08lx at [<%08lx>]\n", instr, instrptr);
ai_skipped += 1;
return 1;
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mm/proc-arm920.S linux/arch/arm/mm/proc-arm920.S
--- v2.4.13/linux/arch/arm/mm/proc-arm920.S Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mm/proc-arm920.S Thu Oct 25 13:53:46 2001
@@ -73,7 +73,7 @@
sbc r1, r1, r1 @ r1 = C - 1
and r3, r3, #255
mov pc, lr
-
+
/*
* cpu_arm920_check_bugs()
*/
@@ -150,7 +150,7 @@
mov r2, #1
cpu_arm920_cache_clean_invalidate_all_r2:
mov ip, #0
-#ifdef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
#else
/*
@@ -180,21 +180,33 @@
* end: Area end address
* flags: nonzero for I cache as well
*/
- .align 5
+ .align 5
ENTRY(cpu_arm920_cache_clean_invalidate_range)
bic r0, r0, #DCACHELINESIZE - 1 @ && added by PGM
+ bic r1, r1, #DCACHELINESIZE - 1 @ && added by DHM
sub r3, r1, r0
cmp r3, #MAX_AREA_SIZE
bgt cpu_arm920_cache_clean_invalidate_all_r2
-1: mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D entry
+1: teq r2, #0
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
+ mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
+ mcrne p15, 0, r0, c7, c5, 1 @ invalidate I entry
+ add r0, r0, #DCACHELINESIZE
+ mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
+ mcrne p15, 0, r0, c7, c5, 1 @ invalidate I entry
+ add r0, r0, #DCACHELINESIZE
+#else
+ mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D entry
+ mcrne p15, 0, r0, c7, c5, 1 @ invalidate I entry
add r0, r0, #DCACHELINESIZE
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D entry
+ mcrne p15, 0, r0, c7, c5, 1 @ invalidate I entry
add r0, r0, #DCACHELINESIZE
+#endif
cmp r0, r1
blt 1b
- teq r2, #0
- movne r0, #0
- mcrne p15, 0, r0, c7, c5, 0 @ invalidate I cache
+
+ mcr p15, 0, r1, c7, c10, 4 @ drain WB
mov pc, lr
/*
@@ -207,10 +219,17 @@
.align 5
ENTRY(cpu_arm920_flush_ram_page)
mov r1, #PAGESIZE
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
+1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
+ add r0, r0, #DCACHELINESIZE
+ mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
+ add r0, r0, #DCACHELINESIZE
+#else
1: mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D entry
add r0, r0, #DCACHELINESIZE
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D entry
add r0, r0, #DCACHELINESIZE
+#endif
subs r1, r1, #2 * DCACHELINESIZE
bne 1b
mcr p15, 0, r1, c7, c10, 4 @ drain WB
@@ -231,11 +250,14 @@
*/
.align 5
ENTRY(cpu_arm920_dcache_invalidate_range)
+#ifndef CONFIG_CPU_ARM920_WRITETHROUGH
tst r0, #DCACHELINESIZE - 1
- bic r0, r0, #DCACHELINESIZE - 1
mcrne p15, 0, r0, c7, c10, 1 @ clean D entry
tst r1, #DCACHELINESIZE - 1
mcrne p15, 0, r1, c7, c10, 1 @ clean D entry
+#endif @ clean D entry
+ bic r0, r0, #DCACHELINESIZE - 1
+ bic r1, r1, #DCACHELINESIZE - 1
1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
add r0, r0, #DCACHELINESIZE
cmp r0, r1
@@ -254,18 +276,21 @@
*/
.align 5
ENTRY(cpu_arm920_dcache_clean_range)
+#ifndef CONFIG_CPU_ARM920_WRITETHROUGH
bic r0, r0, #DCACHELINESIZE - 1
sub r1, r1, r0
cmp r1, #MAX_AREA_SIZE
mov r2, #0
bgt cpu_arm920_cache_clean_invalidate_all_r2
+ bic r1, r1, #DCACHELINESIZE -1
+ add r1, r1, #DCACHELINESIZE
+
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
add r0, r0, #DCACHELINESIZE
- mcr p15, 0, r0, c7, c10, 1 @ clean D entry
- add r0, r0, #DCACHELINESIZE
- subs r1, r1, #2 * DCACHELINESIZE
+ subs r1, r1, #DCACHELINESIZE
bpl 1b
+#endif
mcr p15, 0, r2, c7, c10, 4 @ drain WB
mov pc, lr
@@ -284,7 +309,7 @@
*/
.align 5
ENTRY(cpu_arm920_dcache_clean_page)
-#ifndef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
+#ifndef CONFIG_CPU_ARM920_WRITETHROUGH
mov r1, #PAGESIZE
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
add r0, r0, #DCACHELINESIZE
@@ -305,7 +330,7 @@
*/
.align 5
ENTRY(cpu_arm920_dcache_clean_entry)
-#ifndef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
+#ifndef CONFIG_CPU_ARM920_WRITETHROUGH
mcr p15, 0, r0, c7, c10, 1 @ clean D entry
#endif
mcr p15, 0, r0, c7, c10, 4 @ drain WB
@@ -318,22 +343,44 @@
*
* invalidate a range of virtual addresses from the Icache
*
+ * This is a little misleading, it is not intended to clean out
+ * the i-cache but to make sure that any data written to the
+ * range is made consistant. This means that when we execute code
+ * in that region, everything works as we expect.
+ *
+ * This generally means writing back data in the Dcache and
+ * write buffer and flushing the Icache over that region
+ *
* start: virtual start address
* end: virtual end address
+ *
+ * NOTE: ICACHELINESIZE == DCACHELINESIZE (so we don't need to
+ * loop twice, once for i-cache, once for d-cache)
*/
.align 5
ENTRY(cpu_arm920_icache_invalidate_range)
-1: mcr p15, 0, r0, c7, c10, 1 @ Clean D entry
- add r0, r0, #DCACHELINESIZE
- cmp r0, r1
- blo 1b
+ bic r0, r0, #ICACHELINESIZE - 1 @ Safety check
+ sub r1, r1, r0
+ cmp r1, #MAX_AREA_SIZE
+ bgt cpu_arm920_cache_clean_invalidate_all_r2
+
+ bic r1, r1, #ICACHELINESIZE - 1
+ add r1, r1, #ICACHELINESIZE
+
+1: mcr p15, 0, r0, c7, c5, 1 @ Clean I entry
+ mcr p15, 0, r0, c7, c10, 1 @ Clean D entry
+ add r0, r0, #ICACHELINESIZE
+ subs r1, r1, #ICACHELINESIZE
+ bne 1b
+
mov r0, #0
mcr p15, 0, r0, c7, c10, 4 @ drain WB
+ mov pc, lr
+
ENTRY(cpu_arm920_icache_invalidate_page)
mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache
mov pc, lr
-
/* ================================== TLB ================================= */
/*
@@ -360,6 +407,12 @@
ENTRY(cpu_arm920_tlb_invalidate_range)
mov r3, #0
mcr p15, 0, r3, c7, c10, 4 @ drain WB
+
+ mov r3, #PAGESIZE
+ sub r3, r3, #1
+ bic r0, r0, r3
+ bic r1, r1, r3
+
1: mcr p15, 0, r0, c8, c6, 1 @ invalidate D TLB entry
mcr p15, 0, r0, c8, c5, 1 @ invalidate I TLB entry
add r0, r0, #PAGESIZE
@@ -396,7 +449,7 @@
.align 5
ENTRY(cpu_arm920_set_pgd)
mov ip, #0
-#ifdef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
/* Any reason why we don't use mcr p15, 0, r0, c7, c7, 0 here? --rmk */
mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
#else
@@ -429,7 +482,7 @@
*/
.align 5
ENTRY(cpu_arm920_set_pmd)
-#ifdef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
eor r2, r1, #0x0a @ C & Section
tst r2, #0x0b
biceq r1, r1, #4 @ clear bufferable bit
@@ -463,8 +516,8 @@
tst r1, #LPTE_PRESENT | LPTE_YOUNG @ Present and Young?
movne r2, #0
-#ifdef CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH
- eor r3, r1, #0x0a @ C & small page?
+#ifdef CONFIG_CPU_ARM920_WRITETHROUGH
+ eor r3, r2, #0x0a @ C & small page?
tst r3, #0x0b
biceq r2, r2, #4
#endif
@@ -476,9 +529,9 @@
cpu_manu_name:
- .asciz "ARM/VLSI"
+ .asciz "ARM/CIRRUS"
ENTRY(cpu_arm920_name)
- .ascii "Arm920"
+ .ascii "Arm920T"
#if defined(CONFIG_CPU_ARM920_CPU_IDLE)
.ascii "s"
#endif
@@ -487,7 +540,7 @@
#endif
#if defined(CONFIG_CPU_ARM920_D_CACHE_ON)
.ascii "d"
-#if defined(CONFIG_CPU_ARM920_FORCE_WRITE_THROUGH)
+#if defined(CONFIG_CPU_ARM920_WRITETHROUGH)
.ascii "(wt)"
#else
.ascii "(wb)"
diff -u --recursive --new-file v2.4.13/linux/arch/arm/mm/proc-sa110.S linux/arch/arm/mm/proc-sa110.S
--- v2.4.13/linux/arch/arm/mm/proc-sa110.S Mon Aug 27 12:41:38 2001
+++ linux/arch/arm/mm/proc-sa110.S Thu Oct 25 13:53:46 2001
@@ -271,7 +271,7 @@
bic r0, r0, #DCACHELINESIZE - 1
sub r3, r1, r0
cmp r3, #MAX_AREA_SIZE
- bgt cpu_sa110_cache_clean_invalidate_all_r2
+ bhi cpu_sa110_cache_clean_invalidate_all_r2
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
add r0, r0, #DCACHELINESIZE
@@ -279,7 +279,7 @@
mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
add r0, r0, #DCACHELINESIZE
cmp r0, r1
- blt 1b
+ blo 1b
teq r2, #0
movne r0, #0
mcrne p15, 0, r0, c7, c5, 0 @ invalidate I cache
@@ -288,7 +288,7 @@
ENTRY(cpu_sa1100_cache_clean_invalidate_range)
sub r3, r1, r0
cmp r3, #MAX_AREA_SIZE
- bgt cpu_sa1100_cache_clean_invalidate_all_r2
+ bhi cpu_sa1100_cache_clean_invalidate_all_r2
b 1b
/*
@@ -335,7 +335,7 @@
1: mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry
add r0, r0, #DCACHELINESIZE
cmp r0, r1
- blt 1b
+ blo 1b
mov pc, lr
/*
@@ -354,7 +354,7 @@
sub r1, r1, r0
cmp r1, #MAX_AREA_SIZE
mov r2, #0
- bgt cpu_sa110_cache_clean_invalidate_all_r2
+ bhi cpu_sa110_cache_clean_invalidate_all_r2
1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry
add r0, r0, #DCACHELINESIZE
mcr p15, 0, r0, c7, c10, 1 @ clean D entry
@@ -369,7 +369,7 @@
sub r1, r1, r0
cmp r1, #MAX_AREA_SIZE
mov r2, #0
- bgt cpu_sa1100_cache_clean_invalidate_all_r2
+ bhi cpu_sa1100_cache_clean_invalidate_all_r2
b 1b
/*
@@ -423,6 +423,7 @@
.align 5
ENTRY(cpu_sa110_icache_invalidate_range)
ENTRY(cpu_sa1100_icache_invalidate_range)
+ bic r0, r0, #DCACHELINESIZE - 1
1: mcr p15, 0, r0, c7, c10, 1 @ Clean D entry
add r0, r0, #DCACHELINESIZE
cmp r0, r1
@@ -460,12 +461,14 @@
.align 5
ENTRY(cpu_sa110_tlb_invalidate_range)
ENTRY(cpu_sa1100_tlb_invalidate_range)
+ bic r0, r0, #0x0ff
+ bic r0, r0, #0xf00
mov r3, #0
mcr p15, 0, r3, c7, c10, 4 @ drain WB
1: mcr p15, 0, r0, c8, c6, 1 @ invalidate D TLB entry
add r0, r0, #PAGESIZE
cmp r0, r1
- blt 1b
+ blo 1b
mcr p15, 0, r3, c8, c5, 0 @ invalidate I TLB
mov pc, lr
diff -u --recursive --new-file v2.4.13/linux/arch/arm/tools/mach-types linux/arch/arm/tools/mach-types
--- v2.4.13/linux/arch/arm/tools/mach-types Tue Oct 23 22:48:49 2001
+++ linux/arch/arm/tools/mach-types Thu Oct 25 13:53:46 2001
@@ -6,7 +6,7 @@
# To add an entry into this database, please see Documentation/arm/README,
# or contact rmk@arm.linux.org.uk
#
-# Last update: Fri Oct 5 18:40:53 2001
+# Last update: Mon Oct 22 09:49:06 2001
#
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
#
@@ -114,7 +114,7 @@
gator SA1100_GATOR GATOR 103
granite ARCH_GRANITE GRANITE 104
consus SA1100_CONSUS CONSUS 105
-agilent_aaed2000 ARCH_AAEC2000_AAED2000 AAEC2000_AAED2000 106
+aaed2000 ARCH_AAED2000 AAED2000 106
cdb89712 ARCH_CDB89712 CDB89712 107
graphicsmaster SA1100_GRAPHICSMASTER GRAPHICSMASTER 108
adsbitsy SA1100_ADSBITSY ADSBITSY 109
@@ -131,3 +131,6 @@
bluestem SA1100_BLUESTEM BLUESTEM 120
xingu8 ARCH_XINGU8 XINGU8 121
bushstb ARCH_BUSHSTB BUSHSTB 122
+epsilon1 SA1100_EPSILON1 EPSILON1 123
+balloon SA1100_BALLOON BALLOON 124
+puppy ARCH_PUPPY PUPPY 125
diff -u --recursive --new-file v2.4.13/linux/arch/i386/config.in linux/arch/i386/config.in
--- v2.4.13/linux/arch/i386/config.in Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/config.in Fri Nov 2 17:46:47 2001
@@ -149,6 +149,7 @@
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
fi
tristate 'Toshiba Laptop support' CONFIG_TOSHIBA
+tristate 'Dell Inspiron 8000 support' CONFIG_I8K
tristate '/dev/cpu/microcode - Intel IA32 CPU microcode support' CONFIG_MICROCODE
tristate '/dev/cpu/*/msr - Model-specific register support' CONFIG_X86_MSR
diff -u --recursive --new-file v2.4.13/linux/arch/i386/defconfig linux/arch/i386/defconfig
--- v2.4.13/linux/arch/i386/defconfig Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/defconfig Mon Nov 5 15:24:04 2001
@@ -50,6 +50,7 @@
CONFIG_X86_PGE=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
@@ -84,6 +85,7 @@
#
CONFIG_PCMCIA=y
CONFIG_CARDBUS=y
+# CONFIG_I82092 is not set
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
CONFIG_SYSVIPC=y
@@ -612,6 +614,7 @@
# CONFIG_RAMFS is not set
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
@@ -653,6 +656,8 @@
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+# CONFIG_ZLIB_FS_INFLATE is not set
#
# Partition Types
@@ -706,7 +711,6 @@
# CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_LONG_TIMEOUT is not set
-# CONFIG_USB_LARGE_CONFIG is not set
#
# USB Controllers
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/apic.c linux/arch/i386/kernel/apic.c
--- v2.4.13/linux/arch/i386/kernel/apic.c Tue Oct 9 17:06:51 2001
+++ linux/arch/i386/kernel/apic.c Sat Oct 27 15:39:24 2001
@@ -588,6 +588,7 @@
goto no_apic;
case X86_VENDOR_INTEL:
if (boot_cpu_data.x86 == 6 ||
+ (boot_cpu_data.x86 == 15 && cpu_has_apic) ||
(boot_cpu_data.x86 == 5 && cpu_has_apic))
break;
goto no_apic;
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
--- v2.4.13/linux/arch/i386/kernel/entry.S Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/kernel/entry.S Fri Nov 2 17:18:49 2001
@@ -195,10 +195,10 @@
pushl %eax # save orig_eax
SAVE_ALL
GET_CURRENT(%ebx)
- cmpl $(NR_syscalls),%eax
- jae badsys
testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS
jne tracesys
+ cmpl $(NR_syscalls),%eax
+ jae badsys
call *SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
ENTRY(ret_from_sys_call)
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/io_apic.c linux/arch/i386/kernel/io_apic.c
--- v2.4.13/linux/arch/i386/kernel/io_apic.c Tue Oct 9 17:06:51 2001
+++ linux/arch/i386/kernel/io_apic.c Fri Nov 2 17:35:05 2001
@@ -750,12 +750,14 @@
)
UNEXPECTED_IO_APIC();
+ printk(KERN_DEBUG "....... : PRQ implemented: %X\n", reg_01.PRQ);
printk(KERN_DEBUG "....... : IO APIC version: %04X\n", reg_01.version);
if ( (reg_01.version != 0x01) && /* 82489DX IO-APICs */
+ (reg_01.version != 0x02) && /* 82801BA IO-APICs (ICH2) */
(reg_01.version != 0x10) && /* oldest IO-APICs */
(reg_01.version != 0x11) && /* Pentium/Pro IO-APICs */
(reg_01.version != 0x13) && /* Xeon IO-APICs */
- (reg_01.entries != 0x20) /* Intel P64H (82806 AA) */
+ (reg_01.version != 0x20) /* Intel P64H (82806 AA) */
)
UNEXPECTED_IO_APIC();
if (reg_01.__reserved_1 || reg_01.__reserved_2)
@@ -1237,14 +1239,17 @@
ack_APIC_irq();
if (!(v & (1 << (i & 0x1f)))) {
+#ifdef APIC_LOCKUP_DEBUG
+ struct irq_pin_list *entry;
+#endif
+
#ifdef APIC_MISMATCH_DEBUG
atomic_inc(&irq_mis_count);
#endif
spin_lock(&ioapic_lock);
__mask_and_edge_IO_APIC_irq(irq);
#ifdef APIC_LOCKUP_DEBUG
- for (;;) {
- struct irq_pin_list *entry = irq_2_pin + irq;
+ for (entry = irq_2_pin + irq;;) {
unsigned int reg;
if (entry->pin == -1)
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/irq.c linux/arch/i386/kernel/irq.c
--- v2.4.13/linux/arch/i386/kernel/irq.c Sun Sep 23 11:40:55 2001
+++ linux/arch/i386/kernel/irq.c Thu Oct 25 13:53:46 2001
@@ -512,6 +512,7 @@
if (!local_irq_count(smp_processor_id())) {
do {
barrier();
+ cpu_relax();
} while (irq_desc[irq].status & IRQ_INPROGRESS);
}
}
@@ -766,8 +767,10 @@
#ifdef CONFIG_SMP
/* Wait to make sure it's not being used on another CPU */
- while (desc->status & IRQ_INPROGRESS)
+ while (desc->status & IRQ_INPROGRESS) {
barrier();
+ cpu_relax();
+ }
#endif
kfree(action);
return;
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/microcode.c linux/arch/i386/kernel/microcode.c
--- v2.4.13/linux/arch/i386/kernel/microcode.c Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/kernel/microcode.c Tue Oct 30 15:13:17 2001
@@ -47,6 +47,10 @@
* 1.08 11 Dec 2000, Richard Schaal and
* Tigran Aivazian
* Intel Pentium 4 processor support and bugfixes.
+ * 1.09 30 Oct 2001, Tigran Aivazian
+ * Bugfix for HT (Hyper-Threading) enabled processors
+ * whereby processor resources are shared by all logical processors
+ * in a single CPU package.
*/
#include
@@ -61,7 +65,7 @@
#include
#include
-#define MICROCODE_VERSION "1.08"
+#define MICROCODE_VERSION "1.09"
MODULE_DESCRIPTION("Intel CPU (IA-32) microcode update driver");
MODULE_AUTHOR("Tigran Aivazian ");
@@ -240,10 +244,6 @@
printk(KERN_ERR
"microcode: CPU%d not 'upgrading' to earlier revision"
" %d (current=%d)\n", cpu_num, microcode[i].rev, rev);
- } else if (microcode[i].rev == rev) {
- printk(KERN_ERR
- "microcode: CPU%d already up-to-date (revision %d)\n",
- cpu_num, rev);
} else {
int sum = 0;
struct microcode *m = µcode[i];
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/mtrr.c linux/arch/i386/kernel/mtrr.c
--- v2.4.13/linux/arch/i386/kernel/mtrr.c Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/kernel/mtrr.c Thu Oct 25 14:05:52 2001
@@ -473,25 +473,16 @@
unsigned long config, dummy;
struct pci_dev *dev = NULL;
- /* ServerWorks LE chipsets have problems with write-combining
- Don't allow it and leave room for other chipsets to be tagged */
+ /* ServerWorks LE chipsets have problems with write-combining
+ Don't allow it and leave room for other chipsets to be tagged */
- if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) {
- switch(dev->vendor) {
- case PCI_VENDOR_ID_SERVERWORKS:
- switch (dev->device) {
- case PCI_DEVICE_ID_SERVERWORKS_LE:
+ if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) {
+ if ((dev->vendor == PCI_VENDOR_ID_SERVERWORKS) &&
+ (dev->device == PCI_DEVICE_ID_SERVERWORKS_LE)) {
+ printk (KERN_INFO "mtrr: Serverworks LE detected. Write-combining disabled.\n");
return 0;
- break;
- default:
- break;
- }
- break;
- default:
- break;
+ }
}
- }
-
switch ( mtrr_if )
{
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/pci-i386.c linux/arch/i386/kernel/pci-i386.c
--- v2.4.13/linux/arch/i386/kernel/pci-i386.c Sat May 19 18:07:04 2001
+++ linux/arch/i386/kernel/pci-i386.c Sun Nov 4 09:31:58 2001
@@ -12,7 +12,7 @@
* Hannover, Germany
* hm@ix.de
*
- * Copyright 1997--2000 Martin Mares
+ * Copyright 1997--2000 Martin Mares
*
* For more information, please consult the following manuals (look at
* http://www.pcisig.com/ for how to get them):
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/pci-irq.c linux/arch/i386/kernel/pci-irq.c
--- v2.4.13/linux/arch/i386/kernel/pci-irq.c Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/kernel/pci-irq.c Sun Nov 4 09:31:58 2001
@@ -1,7 +1,7 @@
/*
* Low-Level PCI Support for PC -- Routing of Interrupts
*
- * (c) 1999--2000 Martin Mares
+ * (c) 1999--2000 Martin Mares
*/
#include
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/pci-pc.c linux/arch/i386/kernel/pci-pc.c
--- v2.4.13/linux/arch/i386/kernel/pci-pc.c Tue Oct 9 17:06:51 2001
+++ linux/arch/i386/kernel/pci-pc.c Sun Nov 4 09:31:58 2001
@@ -1,7 +1,7 @@
/*
* Low-Level PCI Support for PC
*
- * (c) 1999--2000 Martin Mares
+ * (c) 1999--2000 Martin Mares
*/
#include
@@ -521,7 +521,7 @@
DBG("PCI: BIOS probe returned s=%02x hw=%02x ver=%02x.%02x l=%02x\n",
status, hw_mech, major_ver, minor_ver, pcibios_last_bus);
if (status || signature != PCI_SIGNATURE) {
- printk (KERN_ERR "PCI: BIOS BUG #%x[%08x] found, report to \n",
+ printk (KERN_ERR "PCI: BIOS BUG #%x[%08x] found\n",
status, signature);
return 0;
}
@@ -773,7 +773,7 @@
if (sum != 0)
continue;
if (check->fields.revision != 0) {
- printk("PCI: unsupported BIOS32 revision %d at 0x%p, report to \n",
+ printk("PCI: unsupported BIOS32 revision %d at 0x%p\n",
check->fields.revision, check);
continue;
}
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/pci-visws.c linux/arch/i386/kernel/pci-visws.c
--- v2.4.13/linux/arch/i386/kernel/pci-visws.c Thu Jun 22 07:17:16 2000
+++ linux/arch/i386/kernel/pci-visws.c Sun Nov 4 09:31:58 2001
@@ -1,7 +1,7 @@
/*
* Low-Level PCI Support for SGI Visual Workstation
*
- * (c) 1999--2000 Martin Mares
+ * (c) 1999--2000 Martin Mares
*/
#include
diff -u --recursive --new-file v2.4.13/linux/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
--- v2.4.13/linux/arch/i386/kernel/setup.c Tue Oct 23 22:48:49 2001
+++ linux/arch/i386/kernel/setup.c Thu Oct 25 13:53:46 2001
@@ -229,8 +229,7 @@
#define SIO_PM_GP_EN 0x80
-static void
-visws_get_board_type_and_rev(void)
+static void __init visws_get_board_type_and_rev(void)
{
int raw;
@@ -402,7 +401,7 @@
}
}
-void __init add_memory_region(unsigned long long start,
+static void __init add_memory_region(unsigned long long start,
unsigned long long size, int type)
{
int x = e820.nr_map;
@@ -667,7 +666,7 @@
*/
#define LOWMEMSIZE() (0x9f000)
-void __init setup_memory_region(void)
+static void __init setup_memory_region(void)
{
char *who = "BIOS-e820";
@@ -699,7 +698,7 @@
} /* setup_memory_region */
-static inline void parse_mem_cmdline (char ** cmdline_p)
+static void __init parse_mem_cmdline (char ** cmdline_p)
{
char c = ' ', *to = command_line, *from = COMMAND_LINE;
int len = 0;
@@ -1263,11 +1262,11 @@
/*
* Read Cyrix DEVID registers (DIR) to get more detailed info. about the CPU
*/
-static void do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
+static void __init do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
{
unsigned char ccr2, ccr3;
unsigned long flags;
-
+
/* we test for DEVID by checking whether CCR3 is writable */
local_irq_save(flags);
ccr3 = getCx86(CX86_CCR3);
@@ -1303,7 +1302,7 @@
* Actually since bugs.h doesnt even reference this perhaps someone should
* fix the documentation ???
*/
-unsigned char Cx86_dir0_msb __initdata = 0;
+static unsigned char Cx86_dir0_msb __initdata = 0;
static char Cx86_model[][9] __initdata = {
"Cx486", "Cx486", "5x86 ", "6x86", "MediaGX ", "6x86MX ",
@@ -1336,7 +1335,7 @@
static void __init check_cx686_slop(struct cpuinfo_x86 *c)
{
unsigned long flags;
-
+
if (Cx86_dir0_msb == 3) {
unsigned char ccr3, ccr5;
@@ -1503,6 +1502,248 @@
return;
}
+#ifdef CONFIG_X86_OOSTORE
+
+static u32 __init power2(u32 x)
+{
+ u32 s=1;
+ while(s<=x)
+ s<<=1;
+ return s>>=1;
+}
+
+/*
+ * Set up an actual MCR
+ */
+
+static void __init winchip_mcr_insert(int reg, u32 base, u32 size, int key)
+{
+ u32 lo, hi;
+
+ hi = base & ~0xFFF;
+ lo = ~(size-1); /* Size is a power of 2 so this makes a mask */
+ lo &= ~0xFFF; /* Remove the ctrl value bits */
+ lo |= key; /* Attribute we wish to set */
+ wrmsr(reg+MSR_IDT_MCR0, lo, hi);
+ mtrr_centaur_report_mcr(reg, lo, hi); /* Tell the mtrr driver */
+}
+
+/*
+ * Figure what we can cover with MCR's
+ *
+ * Shortcut: We know you can't put 4Gig of RAM on a winchip
+ */
+
+static u32 __init ramtop(void) /* 16388 */
+{
+ int i;
+ u32 top = 0;
+ u32 clip = 0xFFFFFFFFUL;
+
+ for (i = 0; i < e820.nr_map; i++) {
+ unsigned long start, end;
+
+ if (e820.map[i].addr > 0xFFFFFFFFUL)
+ continue;
+ /*
+ * Don't MCR over reserved space. Ignore the ISA hole
+ * we frob around that catastrophy already
+ */
+
+ if (e820.map[i].type == E820_RESERVED)
+ {
+ if(e820.map[i].addr >= 0x100000UL && e820.map[i].addr < clip)
+ clip = e820.map[i].addr;
+ continue;
+ }
+ start = e820.map[i].addr;
+ end = e820.map[i].addr + e820.map[i].size;
+ if (start >= end)
+ continue;
+ if (end > top)
+ top = end;
+ }
+ /* Everything below 'top' should be RAM except for the ISA hole.
+ Because of the limited MCR's we want to map NV/ACPI into our
+ MCR range for gunk in RAM
+
+ Clip might cause us to MCR insufficient RAM but that is an
+ acceptable failure mode and should only bite obscure boxes with
+ a VESA hole at 15Mb
+
+ The second case Clip sometimes kicks in is when the EBDA is marked
+ as reserved. Again we fail safe with reasonable results
+ */
+
+ if(top>clip)
+ top=clip;
+
+ return top;
+}
+
+/*
+ * Compute a set of MCR's to give maximum coverage
+ */
+
+static int __init winchip_mcr_compute(int nr, int key)
+{
+ u32 mem = ramtop();
+ u32 root = power2(mem);
+ u32 base = root;
+ u32 top = root;
+ u32 floor = 0;
+ int ct = 0;
+
+ while(ct high && fspace > low)
+ {
+ winchip_mcr_insert(ct, floor, fspace, key);
+ floor += fspace;
+ }
+ else if(high > low)
+ {
+ winchip_mcr_insert(ct, top, high, key);
+ top += high;
+ }
+ else if(low > 0)
+ {
+ base -= low;
+ winchip_mcr_insert(ct, base, low, key);
+ }
+ else break;
+ ct++;
+ }
+ /*
+ * We loaded ct values. We now need to set the mask. The caller
+ * must do this bit.
+ */
+
+ return ct;
+}
+
+static void __init winchip_create_optimal_mcr(void)
+{
+ int i;
+ /*
+ * Allocate up to 6 mcrs to mark as much of ram as possible
+ * as write combining and weak write ordered.
+ *
+ * To experiment with: Linux never uses stack operations for
+ * mmio spaces so we could globally enable stack operation wc
+ *
+ * Load the registers with type 31 - full write combining, all
+ * writes weakly ordered.
+ */
+ int used = winchip_mcr_compute(6, 31);
+
+ /*
+ * Wipe unused MCRs
+ */
+
+ for(i=used;i<8;i++)
+ wrmsr(MSR_IDT_MCR0+i, 0, 0);
+}
+
+static void __init winchip2_create_optimal_mcr(void)
+{
+ u32 lo, hi;
+ int i;
+
+ /*
+ * Allocate up to 6 mcrs to mark as much of ram as possible
+ * as write combining, weak store ordered.
+ *
+ * Load the registers with type 25
+ * 8 - weak write ordering
+ * 16 - weak read ordering
+ * 1 - write combining
+ */
+
+ int used = winchip_mcr_compute(6, 25);
+
+ /*
+ * Mark the registers we are using.
+ */
+
+ rdmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ for(i=0;i>17) & 7;
+ lo |= key<<6; /* replace with unlock key */
+ wrmsr(MSR_IDT_MCR_CTRL, lo, hi);
+}
+
+static void __init winchip2_protect_mcr(void)
+{
+ u32 lo, hi;
+
+ rdmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ lo&=~0x1C0; /* blank bits 8-6 */
+ wrmsr(MSR_IDT_MCR_CTRL, lo, hi);
+}
+
+#endif
+
static void __init init_centaur(struct cpuinfo_x86 *c)
{
enum {
@@ -1546,6 +1787,19 @@
fcr_clr=DPDC;
printk(KERN_NOTICE "Disabling bugged TSC.\n");
clear_bit(X86_FEATURE_TSC, &c->x86_capability);
+#ifdef CONFIG_X86_OOSTORE
+ winchip_create_optimal_mcr();
+ /* Enable
+ write combining on non-stack, non-string
+ write combining on string, all types
+ weak write ordering
+
+ The C6 original lacks weak read order
+
+ Note 0x120 is write only on Winchip 1 */
+
+ wrmsr(MSR_IDT_MCR_CTRL, 0x01F0001F, 0);
+#endif
break;
case 8:
switch(c->x86_mask) {
@@ -1561,11 +1815,37 @@
}
fcr_set=ECX8|DSMC|DTLOCK|EMMX|EBRPRED|ERETSTK|E2MMX|EAMD3D;
fcr_clr=DPDC;
+#ifdef CONFIG_X86_OOSTORE
+ winchip2_unprotect_mcr();
+ winchip2_create_optimal_mcr();
+ rdmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ /* Enable
+ write combining on non-stack, non-string
+ write combining on string, all types
+ weak write ordering
+ */
+ lo|=31;
+ wrmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ winchip2_protect_mcr();
+#endif
break;
case 9:
name="3";
fcr_set=ECX8|DSMC|DTLOCK|EMMX|EBRPRED|ERETSTK|E2MMX|EAMD3D;
fcr_clr=DPDC;
+#ifdef CONFIG_X86_OOSTORE
+ winchip2_unprotect_mcr();
+ winchip2_create_optimal_mcr();
+ rdmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ /* Enable
+ write combining on non-stack, non-string
+ write combining on string, all types
+ weak write ordering
+ */
+ lo|=31;
+ wrmsr(MSR_IDT_MCR_CTRL, lo, hi);
+ winchip2_protect_mcr();
+#endif
break;
case 10:
name="4";
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/8260_io/commproc.c linux/arch/ppc/8260_io/commproc.c
--- v2.4.13/linux/arch/ppc/8260_io/commproc.c Mon May 21 17:04:46 2001
+++ linux/arch/ppc/8260_io/commproc.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.commproc.c 1.5 05/17/01 18:14:19 cort
+ * BK Id: SCCS/s.commproc.c 1.10 10/16/01 16:21:52 trini
*/
/*
@@ -137,7 +137,7 @@
* Baud rate clocks are zero-based in the driver code (as that maps
* to port numbers). Documentation uses 1-based numbering.
*/
-#define BRG_INT_CLK (((bd_t *)__res)->bi_brgfreq * 1000000)
+#define BRG_INT_CLK (((bd_t *)__res)->bi_brgfreq)
#define BRG_UART_CLK (BRG_INT_CLK/16)
/* This function is used by UARTS, or anything else that uses a 16x
@@ -169,8 +169,6 @@
{
volatile uint *bp;
- /* This is good enough to get SMCs running.....
- */
if (brg < 4) {
bp = (uint *)&immr->im_brgc1;
}
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/8xx_io/commproc.c linux/arch/ppc/8xx_io/commproc.c
--- v2.4.13/linux/arch/ppc/8xx_io/commproc.c Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/8xx_io/commproc.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.commproc.c 1.13 09/14/01 18:01:16 trini
+ * BK Id: SCCS/s.commproc.c 1.15 10/16/01 16:21:52 trini
*/
/*
@@ -38,6 +38,8 @@
#include
#include
+extern int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep);
+
static uint dp_alloc_base; /* Starting offset in DP ram */
static uint dp_alloc_top; /* Max offset + 1 */
static uint host_buffer; /* One page of host buffer */
@@ -64,6 +66,18 @@
imp = (immap_t *)IMAP_ADDR;
commproc = (cpm8xx_t *)&imp->im_cpm;
+#ifdef CONFIG_UCODE_PATCH
+ /* Perform a reset.
+ */
+ commproc->cp_cpcr = (CPM_CR_RST | CPM_CR_FLG);
+
+ /* Wait for it.
+ */
+ while (commproc->cp_cpcr & CPM_CR_FLG);
+
+ cpm_load_patch(imp);
+#endif
+
/* Set SDMA Bus Request priority 5.
* On 860T, this also enables FEC priority 6. I am not sure
* this is what we realy want for some applications, but the
@@ -81,9 +95,17 @@
*/
host_buffer = host_page_addr; /* Host virtual page address */
host_end = host_page_addr + PAGE_SIZE;
- pte = va_to_pte(host_page_addr);
- pte_val(*pte) |= _PAGE_NO_CACHE;
- flush_tlb_page(init_mm.mmap, host_buffer);
+
+ /* We need to get this page early, so I have to do it the
+ * hard way.
+ */
+ if (get_pteptr(&init_mm, host_page_addr, &pte)) {
+ pte_val(*pte) |= _PAGE_NO_CACHE;
+ flush_tlb_page(init_mm.mmap, host_buffer);
+ }
+ else {
+ panic("Huh? No CPM host page?");
+ }
/* Tell everyone where the comm processor resides.
*/
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/8xx_io/uart.c linux/arch/ppc/8xx_io/uart.c
--- v2.4.13/linux/arch/ppc/8xx_io/uart.c Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/8xx_io/uart.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.uart.c 1.16 09/14/01 18:01:17 trini
+ * BK Id: SCCS/s.uart.c 1.19 10/26/01 09:59:32 trini
*/
/*
* UART driver for MPC860 CPM SCC or SMC
@@ -94,10 +94,10 @@
static int serial_refcount;
static int serial_console_setup(struct console *co, char *options);
-static int serial_console_wait_key(struct console *co);
static void serial_console_write(struct console *c, const char *s,
unsigned count);
static kdev_t serial_console_device(struct console *c);
+static int serial_console_wait_key(struct console *co);
#if defined(CONFIG_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
static unsigned long break_pressed; /* break, really ... */
@@ -481,7 +481,9 @@
tty->flip.count++;
}
+#if defined(CONFIG_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
ignore_char:
+#endif
/* This BD is ready to be used again. Clear status.
* Get next BD.
*/
@@ -876,7 +878,7 @@
static void change_speed(ser_info_t *info)
{
int baud_rate;
- unsigned cflag, cval, scval, prev_mode;
+ unsigned cflag, cval, scval, prev_mode, new_mode;
int i, bits, sbits, idx;
unsigned long flags;
struct serial_state *state;
@@ -917,10 +919,10 @@
cval |= SMCMR_PEN;
scval |= SCU_PMSR_PEN;
bits++;
- }
- if (!(cflag & PARODD)) {
- cval |= SMCMR_PM_EVEN;
- scval |= (SCU_PMSR_REVP | SCU_PMSR_TEVP);
+ if (!(cflag & PARODD)) {
+ cval |= SMCMR_PM_EVEN;
+ scval |= (SCU_PMSR_REVP | SCU_PMSR_TEVP);
+ }
}
/* Determine divisor based on baud rate */
@@ -993,7 +995,13 @@
idx = PORT_NUM(state->smc_scc_num);
if (state->smc_scc_num & NUM_IS_SCC) {
sccp = &cpmp->cp_scc[idx];
- sccp->scc_pmsr = (sbits << 12) | scval;
+ new_mode = (sbits << 12) | scval;
+ prev_mode = sccp->scc_pmsr;
+ if (!(prev_mode & SCU_PMSR_PEN))
+ /* If parity is disabled, mask out even/odd */
+ prev_mode &= ~(SCU_PMSR_TPM|SCU_PMSR_RPM);
+ if (prev_mode != new_mode)
+ sccp->scc_pmsr = new_mode;
}
else {
smcp = &cpmp->cp_smc[idx];
@@ -1003,8 +1011,13 @@
* present.
*/
prev_mode = smcp->smc_smcmr;
- smcp->smc_smcmr = smcr_mk_clen(bits) | cval | SMCMR_SM_UART;
- smcp->smc_smcmr |= (prev_mode & (SMCMR_REN | SMCMR_TEN));
+ new_mode = smcr_mk_clen(bits) | cval | SMCMR_SM_UART;
+ new_mode |= (prev_mode & (SMCMR_REN | SMCMR_TEN));
+ if (!(prev_mode & SMCMR_PEN))
+ /* If parity is disabled, mask out even/odd */
+ prev_mode &= ~SMCMR_PM_EVEN;
+ if (prev_mode != new_mode)
+ smcp->smc_smcmr = new_mode;
}
m8xx_cpm_setbrg((state - rs_table), baud_rate);
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/config.in linux/arch/ppc/config.in
--- v2.4.13/linux/arch/ppc/config.in Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/config.in Fri Nov 2 17:43:54 2001
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.config.in 1.40 08/24/01 20:31:47 paulus
+# BK Id: SCCS/s.config.in 1.43 10/16/01 15:18:50 trini
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/config-language.txt.
@@ -46,6 +46,8 @@
if [ "$CONFIG_6xx" = "y" -o "$CONFIG_POWER3" = "y" -o \
"$CONFIG_POWER4" = "y" ]; then
define_bool CONFIG_PPC_STD_MMU y
+else
+ define_bool CONFIG_PPC_STD_MMU n
fi
if [ "$CONFIG_8260" = "y" ]; then
@@ -66,6 +68,7 @@
"RPX-Lite CONFIG_RPXLITE \
RPX-Classic CONFIG_RPXCLASSIC \
BSE-IP CONFIG_BSEIP \
+ FADS CONFIG_FADS \
TQM823L CONFIG_TQM823L \
TQM850L CONFIG_TQM850L \
TQM855L CONFIG_TQM855L \
@@ -74,6 +77,7 @@
TQM860 CONFIG_TQM860 \
SPD823TS CONFIG_SPD823TS \
IVMS8 CONFIG_IVMS8 \
+ IVML24 CONFIG_IVML24 \
SM850 CONFIG_SM850 \
MBX CONFIG_MBX \
WinCept CONFIG_WINCEPT" RPX-Lite
@@ -95,12 +99,7 @@
Synergy-Gemini CONFIG_GEMINI" CHRP/PowerMac/PReP
fi
-if [ "$CONFIG_PPC64BRIDGE" != "y" ]; then
- bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX
-fi
-
-if [ "$CONFIG_POWER3" = "n" -a "$CONFIG_POWER4" = "n" -a \
- "$CONFIG_6xx" = "n" ]; then
+if [ "$CONFIG_PPC_STD_MMU" != "y" ]; then
define_bool CONFIG_ALL_PPC n
fi
@@ -183,6 +182,10 @@
else
bool 'Generic /dev/rtc emulation' CONFIG_GEN_RTC
fi
+fi
+
+if [ "$CONFIG_ALL_PPC" = "y" -a "$CONFIG_POWER3" = "n" ] ; then
+ bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX
fi
if [ "$CONFIG_ALL_PPC" = "y" ]; then
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/IVMS8_defconfig linux/arch/ppc/configs/IVMS8_defconfig
--- v2.4.13/linux/arch/ppc/configs/IVMS8_defconfig Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/configs/IVMS8_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -39,10 +41,10 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
CONFIG_IVMS8=y
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -85,7 +87,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -138,6 +139,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -237,7 +239,6 @@
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -372,7 +373,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -491,12 +491,108 @@
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
# CONFIG_UCODE_PATCH is not set
-CONFIG_BLK_DEV_MPC8xx_IDE=y
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/SM850_defconfig linux/arch/ppc/configs/SM850_defconfig
--- v2.4.13/linux/arch/ppc/configs/SM850_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/SM850_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
CONFIG_SM850=y
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -111,6 +112,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -138,6 +140,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -191,12 +194,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -306,7 +310,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -323,7 +331,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
#
CONFIG_8xx_COPYBACK=y
CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/SPD823TS_defconfig linux/arch/ppc/configs/SPD823TS_defconfig
--- v2.4.13/linux/arch/ppc/configs/SPD823TS_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/SPD823TS_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -39,10 +41,10 @@
# CONFIG_TQM860 is not set
CONFIG_SPD823TS=y
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -85,7 +87,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -110,6 +111,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -137,6 +139,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -190,12 +193,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -305,7 +309,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -322,7 +330,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -443,11 +451,109 @@
#
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/TQM823L_defconfig linux/arch/ppc/configs/TQM823L_defconfig
--- v2.4.13/linux/arch/ppc/configs/TQM823L_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/TQM823L_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
CONFIG_TQM823L=y
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -111,6 +112,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -138,6 +140,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -191,12 +194,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -306,7 +310,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -323,7 +331,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
#
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/TQM850L_defconfig linux/arch/ppc/configs/TQM850L_defconfig
--- v2.4.13/linux/arch/ppc/configs/TQM850L_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/TQM850L_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
CONFIG_TQM850L=y
# CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -111,6 +112,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -138,6 +140,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -191,12 +194,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -214,9 +214,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -277,6 +277,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -306,7 +310,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -323,7 +331,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -356,6 +363,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
#
CONFIG_8xx_COPYBACK=y
CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/TQM860L_defconfig linux/arch/ppc/configs/TQM860L_defconfig
--- v2.4.13/linux/arch/ppc/configs/TQM860L_defconfig Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/configs/TQM860L_defconfig Fri Nov 2 17:43:54 2001
@@ -27,10 +27,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -39,11 +41,11 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
CONFIG_TQM8xxL=y
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -86,7 +88,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -139,6 +140,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -238,7 +240,6 @@
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -373,7 +374,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -500,12 +500,108 @@
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
# CONFIG_UCODE_PATCH is not set
-CONFIG_BLK_DEV_MPC8xx_IDE=y
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/apus_defconfig linux/arch/ppc/configs/apus_defconfig
--- v2.4.13/linux/arch/ppc/configs/apus_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/apus_defconfig Fri Nov 2 17:43:54 2001
@@ -32,7 +32,6 @@
# CONFIG_ALL_PPC is not set
CONFIG_APUS=y
# CONFIG_GEMINI is not set
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
@@ -105,7 +104,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -133,6 +131,7 @@
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID5=m
+# CONFIG_MD_MULTIPATH is not set
CONFIG_BLK_DEV_LVM=m
#
@@ -161,6 +160,7 @@
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
@@ -168,6 +168,8 @@
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -179,6 +181,8 @@
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
@@ -191,6 +195,7 @@
# CONFIG_IPV6 is not set
CONFIG_KHTTPD=m
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -261,6 +266,9 @@
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_DMA_NONPCI is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -298,6 +306,7 @@
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
@@ -334,8 +343,6 @@
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
CONFIG_A3000_SCSI=y
CONFIG_A4000T_SCSI=y
CONFIG_A2091_SCSI=y
@@ -374,12 +381,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
CONFIG_ARIADNE=y
CONFIG_NE2K_ZORRO=y
CONFIG_A2065=y
@@ -403,9 +407,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -496,14 +500,13 @@
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
# CONFIG_FB_SIS is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_FBCON_ADVANCED=y
# CONFIG_FBCON_MFB is not set
@@ -582,11 +585,38 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
+# CONFIG_INPUT_AMIJOY is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -599,7 +629,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -632,6 +661,7 @@
CONFIG_VFAT_FS=y
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y
CONFIG_TMPFS=y
CONFIG_RAMFS=m
@@ -804,6 +834,104 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/bseip_defconfig linux/arch/ppc/configs/bseip_defconfig
--- v2.4.13/linux/arch/ppc/configs/bseip_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/bseip_defconfig Fri Nov 2 17:43:54 2001
@@ -25,10 +25,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
CONFIG_BSEIP=y
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -109,6 +110,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -137,6 +139,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -190,12 +193,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -305,7 +309,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -322,7 +330,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -443,11 +451,109 @@
#
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/common_defconfig linux/arch/ppc/configs/common_defconfig
--- v2.4.13/linux/arch/ppc/configs/common_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/common_defconfig Fri Nov 2 17:43:54 2001
@@ -32,7 +32,6 @@
CONFIG_ALL_PPC=y
# CONFIG_APUS is not set
# CONFIG_GEMINI is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
CONFIG_TAU=y
@@ -69,6 +68,7 @@
#
# CONFIG_PARPORT is not set
CONFIG_PPC_RTC=y
+CONFIG_PPC601_SYNC_FIX=y
CONFIG_PROC_DEVICETREE=y
CONFIG_PPC_RTAS=y
CONFIG_BOOTX_TEXT=y
@@ -86,7 +86,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -112,6 +111,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -141,6 +141,7 @@
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
@@ -148,6 +149,8 @@
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -159,6 +162,8 @@
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_TARGET_LOG is not set
@@ -169,6 +174,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -272,6 +278,9 @@
# CONFIG_IDEDMA_IVB is not set
# CONFIG_DMA_NONPCI is not set
CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -315,7 +324,8 @@
# CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
CONFIG_AIC7XXX_OLD_PROC_STATS=y
-CONFIG_SCSI_ADVANSYS=y
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ADVANSYS=m
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
@@ -389,13 +399,10 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
CONFIG_MACE=y
# CONFIG_MACE_AAUI_PORT is not set
CONFIG_BMAC=y
CONFIG_GMAC=y
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
@@ -426,6 +433,7 @@
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -442,9 +450,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -464,7 +472,18 @@
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_STRIP is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_ARLAN is not set
+# CONFIG_AIRONET4500 is not set
+# CONFIG_AIRONET4500_NONCS is not set
+# CONFIG_AIRONET4500_PROC is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+CONFIG_APPLE_AIRPORT=m
+# CONFIG_PLX_HERMES is not set
+CONFIG_NET_WIRELESS=y
#
# Token Ring devices
@@ -521,9 +540,6 @@
CONFIG_FB_IMSTT=y
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
@@ -533,9 +549,11 @@
CONFIG_FB_ATY=y
CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_CT=y
+CONFIG_FB_RADEON=y
CONFIG_FB_ATY128=y
-CONFIG_FB_3DFX=y
# CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
@@ -611,11 +629,37 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -628,7 +672,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -661,6 +704,7 @@
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -809,6 +853,8 @@
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_LONG_TIMEOUT is not set
+# CONFIG_USB_LARGE_CONFIG is not set
#
# USB Controllers
@@ -823,13 +869,22 @@
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=y
+# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_WACOM is not set
#
@@ -837,26 +892,26 @@
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
+CONFIG_USB_SCANNER=m
# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
#
# USB Network adaptors
#
-# CONFIG_USB_PLUSB is not set
# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
-# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
#
# USB port drivers
@@ -874,16 +929,26 @@
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
CONFIG_USB_SERIAL_VISOR=m
+# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
-# USB misc drivers
+# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/est8260_defconfig linux/arch/ppc/configs/est8260_defconfig
--- v2.4.13/linux/arch/ppc/configs/est8260_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/est8260_defconfig Fri Nov 2 17:43:54 2001
@@ -29,7 +29,6 @@
CONFIG_PPC_STD_MMU=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_EST8260=y
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_SMP is not set
#
@@ -69,7 +68,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -95,6 +93,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -123,6 +122,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -176,12 +176,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -199,9 +196,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -263,6 +260,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -292,7 +293,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -309,7 +314,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -342,6 +346,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -422,6 +427,103 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/gemini_defconfig linux/arch/ppc/configs/gemini_defconfig
--- v2.4.13/linux/arch/ppc/configs/gemini_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/gemini_defconfig Fri Nov 2 17:43:54 2001
@@ -32,7 +32,6 @@
# CONFIG_ALL_PPC is not set
# CONFIG_APUS is not set
CONFIG_GEMINI=y
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
CONFIG_TAU=y
@@ -77,7 +76,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -103,6 +101,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -137,6 +136,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -202,6 +202,7 @@
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
@@ -243,8 +244,6 @@
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
@@ -270,12 +269,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-CONFIG_NCR885E=y
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
@@ -295,9 +291,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -359,6 +355,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -390,7 +390,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -407,7 +411,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -440,6 +443,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -517,6 +521,103 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/ibmchrp_defconfig linux/arch/ppc/configs/ibmchrp_defconfig
--- v2.4.13/linux/arch/ppc/configs/ibmchrp_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/ibmchrp_defconfig Fri Nov 2 17:43:54 2001
@@ -32,7 +32,6 @@
CONFIG_ALL_PPC=y
# CONFIG_APUS is not set
# CONFIG_GEMINI is not set
-# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
@@ -63,6 +62,7 @@
#
# CONFIG_PARPORT is not set
CONFIG_PPC_RTC=y
+# CONFIG_PPC601_SYNC_FIX is not set
CONFIG_PROC_DEVICETREE=y
CONFIG_PPC_RTAS=y
# CONFIG_BOOTX_TEXT is not set
@@ -79,7 +79,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -105,6 +104,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -134,6 +134,7 @@
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
@@ -141,6 +142,8 @@
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -152,6 +155,8 @@
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_TARGET_LOG is not set
@@ -162,6 +167,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -227,6 +233,7 @@
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
@@ -295,12 +302,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
@@ -319,8 +323,6 @@
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
CONFIG_DE4X5=y
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
@@ -331,6 +333,7 @@
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -347,9 +350,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -422,9 +425,6 @@
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
@@ -432,9 +432,11 @@
# CONFIG_FB_MATROX_G450 is not set
# CONFIG_FB_MATROX_MULTIHEAD is not set
# CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
-CONFIG_FB_3DFX=y
# CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
@@ -505,11 +507,37 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -522,7 +550,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -555,6 +582,7 @@
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -673,6 +701,104 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/mbx_defconfig linux/arch/ppc/configs/mbx_defconfig
--- v2.4.13/linux/arch/ppc/configs/mbx_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/mbx_defconfig Fri Nov 2 17:43:54 2001
@@ -25,10 +25,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
CONFIG_MBX=y
# CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -108,6 +109,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -132,6 +134,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -184,12 +187,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -207,9 +207,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -270,6 +270,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -298,7 +302,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -315,7 +323,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -348,6 +355,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -436,11 +444,109 @@
#
CONFIG_8xx_COPYBACK=y
CONFIG_8xx_CPU6=y
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/oak_defconfig linux/arch/ppc/configs/oak_defconfig
--- v2.4.13/linux/arch/ppc/configs/oak_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/oak_defconfig Fri Nov 2 17:43:54 2001
@@ -27,9 +27,9 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
+# CONFIG_PPC_STD_MMU is not set
CONFIG_OAK=y
# CONFIG_WALNUT is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
# CONFIG_MATH_EMULATION is not set
@@ -70,7 +70,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -96,6 +95,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -121,6 +121,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -173,12 +174,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-CONFIG_OAKNET=y
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -196,9 +194,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -259,6 +257,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -288,7 +290,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -305,7 +311,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -338,6 +343,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -402,6 +408,103 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/power3_defconfig linux/arch/ppc/configs/power3_defconfig
--- v2.4.13/linux/arch/ppc/configs/power3_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/power3_defconfig Fri Nov 2 17:43:54 2001
@@ -86,7 +86,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -112,6 +111,7 @@
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
CONFIG_MD_RAID5=y
+# CONFIG_MD_MULTIPATH is not set
CONFIG_BLK_DEV_LVM=y
#
@@ -137,6 +137,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -202,6 +203,7 @@
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
@@ -272,12 +274,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
@@ -296,8 +295,6 @@
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
-# CONFIG_TULIP_MWI is not set
-# CONFIG_TULIP_MMIO is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
@@ -308,6 +305,7 @@
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -324,9 +322,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -399,9 +397,6 @@
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
@@ -411,9 +406,11 @@
# CONFIG_FB_MATROX_G450 is not set
CONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
# CONFIG_FB_SIS is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
@@ -478,6 +475,7 @@
CONFIG_I2C_ALGOPCF=y
# CONFIG_I2C_ELEKTOR is not set
CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_PROC is not set
#
# Mice
@@ -491,11 +489,37 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -508,7 +532,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -541,6 +564,7 @@
CONFIG_VFAT_FS=y
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -697,6 +721,104 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+# CONFIG_USB_HID is not set
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_WACOM is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/rpxcllf_defconfig linux/arch/ppc/configs/rpxcllf_defconfig
--- v2.4.13/linux/arch/ppc/configs/rpxcllf_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/rpxcllf_defconfig Fri Nov 2 17:43:54 2001
@@ -25,10 +25,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set
CONFIG_RPXCLASSIC=y
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -109,6 +110,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -137,6 +139,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -190,12 +193,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -305,7 +309,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -322,7 +330,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -444,11 +452,109 @@
#
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/rpxlite_defconfig linux/arch/ppc/configs/rpxlite_defconfig
--- v2.4.13/linux/arch/ppc/configs/rpxlite_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/rpxlite_defconfig Fri Nov 2 17:43:54 2001
@@ -25,10 +25,12 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8xx=y
+# CONFIG_PPC_STD_MMU is not set
CONFIG_SERIAL_CONSOLE=y
CONFIG_RPXLITE=y
# CONFIG_RPXCLASSIC is not set
# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
# CONFIG_TQM823L is not set
# CONFIG_TQM850L is not set
# CONFIG_TQM855L is not set
@@ -37,10 +39,10 @@
# CONFIG_TQM860 is not set
# CONFIG_SPD823TS is not set
# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
# CONFIG_SM850 is not set
# CONFIG_MBX is not set
# CONFIG_WINCEPT is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
@@ -83,7 +85,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -109,6 +110,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -137,6 +139,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -190,12 +193,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -213,9 +213,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -276,6 +276,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -305,7 +309,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -322,7 +330,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -355,6 +362,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -441,11 +449,109 @@
#
CONFIG_8xx_COPYBACK=y
# CONFIG_8xx_CPU6 is not set
+# CONFIG_UCODE_PATCH is not set
#
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/configs/walnut_defconfig linux/arch/ppc/configs/walnut_defconfig
--- v2.4.13/linux/arch/ppc/configs/walnut_defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/configs/walnut_defconfig Fri Nov 2 17:43:54 2001
@@ -27,9 +27,9 @@
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
+# CONFIG_PPC_STD_MMU is not set
# CONFIG_OAK is not set
CONFIG_WALNUT=y
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
# CONFIG_MATH_EMULATION is not set
@@ -70,7 +70,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -96,6 +95,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -121,6 +121,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -173,12 +174,9 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
@@ -196,9 +194,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -259,6 +257,10 @@
# Input core support
#
# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
#
# Macintosh device drivers
@@ -281,6 +283,7 @@
# CONFIG_I2C_ALGOBIT is not set
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_PROC is not set
#
# Mice
@@ -291,7 +294,11 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
#
# Input core support is needed for joysticks
@@ -308,7 +315,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -341,6 +347,7 @@
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -405,6 +412,103 @@
# USB support
#
# CONFIG_USB is not set
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+# CONFIG_USB_OHCI is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+
+#
+# Input core support is needed for USB HID
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
#
# Bluetooth support
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/defconfig linux/arch/ppc/defconfig
--- v2.4.13/linux/arch/ppc/defconfig Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/defconfig Fri Nov 2 17:43:54 2001
@@ -32,7 +32,6 @@
CONFIG_ALL_PPC=y
# CONFIG_APUS is not set
# CONFIG_GEMINI is not set
-CONFIG_PPC601_SYNC_FIX=y
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
CONFIG_TAU=y
@@ -69,6 +68,7 @@
#
# CONFIG_PARPORT is not set
CONFIG_PPC_RTC=y
+CONFIG_PPC601_SYNC_FIX=y
CONFIG_PROC_DEVICETREE=y
CONFIG_PPC_RTAS=y
CONFIG_BOOTX_TEXT=y
@@ -86,7 +86,6 @@
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
#
# Block devices
@@ -112,6 +111,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
@@ -141,6 +141,7 @@
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
@@ -148,6 +149,8 @@
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
@@ -159,6 +162,8 @@
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_TARGET_LOG is not set
@@ -169,6 +174,7 @@
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -272,6 +278,9 @@
# CONFIG_IDEDMA_IVB is not set
# CONFIG_DMA_NONPCI is not set
CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
@@ -315,7 +324,8 @@
# CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
CONFIG_AIC7XXX_OLD_PROC_STATS=y
-# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ADVANSYS=m
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
@@ -333,7 +343,7 @@
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_NCR53C8XX=y
CONFIG_SCSI_SYM53C8XX=y
CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
@@ -389,13 +399,10 @@
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
CONFIG_MACE=y
# CONFIG_MACE_AAUI_PORT is not set
CONFIG_BMAC=y
CONFIG_GMAC=y
-# CONFIG_NCR885E is not set
-# CONFIG_OAKNET is not set
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
@@ -426,6 +433,7 @@
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -442,9 +450,9 @@
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
@@ -464,7 +472,18 @@
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_STRIP is not set
+# CONFIG_WAVELAN is not set
+# CONFIG_ARLAN is not set
+# CONFIG_AIRONET4500 is not set
+# CONFIG_AIRONET4500_NONCS is not set
+# CONFIG_AIRONET4500_PROC is not set
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+CONFIG_APPLE_AIRPORT=m
+# CONFIG_PLX_HERMES is not set
+CONFIG_NET_WIRELESS=y
#
# Token Ring devices
@@ -521,9 +540,6 @@
CONFIG_FB_IMSTT=y
# CONFIG_FB_S3TRIO is not set
# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_PVR2 is not set
-# CONFIG_FB_PVR2_DEBUG is not set
-# CONFIG_FB_E1355 is not set
CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
@@ -533,9 +549,11 @@
CONFIG_FB_ATY=y
CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_CT=y
+CONFIG_FB_RADEON=y
CONFIG_FB_ATY128=y
-CONFIG_FB_3DFX=y
# CONFIG_FB_SIS is not set
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
@@ -611,11 +629,37 @@
#
# Joysticks
#
-# CONFIG_JOYSTICK is not set
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
#
-# Input core support is needed for joysticks
+# Joysticks
#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
@@ -628,7 +672,6 @@
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
@@ -661,6 +704,7 @@
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
# CONFIG_RAMFS is not set
@@ -809,6 +853,8 @@
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_LONG_TIMEOUT is not set
+# CONFIG_USB_LARGE_CONFIG is not set
#
# USB Controllers
@@ -823,13 +869,22 @@
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
+# 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_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=y
+# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_WACOM is not set
#
@@ -837,26 +892,26 @@
#
# CONFIG_USB_DC2XX is not set
# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_SCANNER is not set
+CONFIG_USB_SCANNER=m
# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
#
# USB Multimedia devices
#
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
#
# USB Network adaptors
#
-# CONFIG_USB_PLUSB is not set
# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
-# CONFIG_USB_NET1080 is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
#
# USB port drivers
@@ -874,16 +929,26 @@
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
CONFIG_USB_SERIAL_VISOR=m
+# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
-# USB misc drivers
+# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/Makefile linux/arch/ppc/kernel/Makefile
--- v2.4.13/linux/arch/ppc/kernel/Makefile Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/Makefile Fri Nov 2 17:43:54 2001
@@ -1,4 +1,4 @@
-# BK Id: SCCS/s.Makefile 1.32 08/24/01 20:07:37 paulus
+# BK Id: SCCS/s.Makefile 1.34 10/16/01 15:58:42 trini
#
#
# Makefile for the linux kernel.
@@ -15,26 +15,21 @@
EXTRA_AFLAGS := -Wa,-mppc64bridge
endif
-ifeq ($(CONFIG_4xx),y)
- KHEAD := head_4xx.o
-else
- ifeq ($(CONFIG_8xx),y)
- KHEAD := head_8xx.o
- else
- KHEAD := head.o
- endif
-endif
+# Start off with 'head.o', change as needed.
+HEAD-y := head.o
+HEAD-$(CONFIG_4xx) := head_4xx.o
+HEAD-$(CONFIG_8xx) := head_8xx.o
-all: $(KHEAD) kernel.o
+all: $(HEAD-y) kernel.o
O_TARGET := kernel.o
export-objs := ppc_ksyms.o prep_setup.o time.o
obj-y := entry.o traps.o irq.o idle.o time.o misc.o \
- process.o signal.o ptrace.o \
- ppc_htab.o semaphore.o syscalls.o \
- align.o setup.o cputable.o
+ process.o signal.o ptrace.o align.o \
+ semaphore.o syscalls.o setup.o \
+ cputable.o ppc_htab.o
obj-$(CONFIG_6xx) += l2cr.o
obj-$(CONFIG_MODULES) += ppc_ksyms.o
obj-$(CONFIG_POWER4) += xics.o
@@ -68,8 +63,8 @@
obj-$(CONFIG_NVRAM) += pmac_nvram.o
obj-$(CONFIG_PMAC_BACKLIGHT) += pmac_backlight.o
obj-$(CONFIG_PMAC_PBOOK) += sleep.o
-obj-$(CONFIG_PPC_RTAS) += error_log.o proc_rtas.o
obj-$(CONFIG_PREP_RESIDUAL) += residual.o
+obj-$(CONFIG_PPC_RTAS) += error_log.o proc_rtas.o
obj-$(CONFIG_GEMINI) += gemini_prom.o gemini_pci.o gemini_setup.o \
open_pic.o
obj-$(CONFIG_8260) += m8260_setup.o ppc8260_pic.o
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/apus_setup.c linux/arch/ppc/kernel/apus_setup.c
--- v2.4.13/linux/arch/ppc/kernel/apus_setup.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/apus_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.apus_setup.c 1.20 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.apus_setup.c 1.22 10/18/01 11:16:27 trini
*/
/*
* linux/arch/ppc/kernel/apus_setup.c
@@ -1111,9 +1111,6 @@
ppc_md.kbd_unexpected_up = apus_kbd_unexpected_up;
ppc_md.kbd_leds = apus_kbd_leds;
ppc_md.kbd_init_hw = apus_kbd_init_hw;
-#ifdef CONFIG_MAGIC_SYSRQ
- ppc_md.kbd_sysrq_xlate = NULL;
-#endif
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
ppc_ide_md.ide_init_hwif = apus_ide_init_hwif_ports;
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/gemini_pci.c linux/arch/ppc/kernel/gemini_pci.c
--- v2.4.13/linux/arch/ppc/kernel/gemini_pci.c Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/gemini_pci.c Fri Nov 2 17:43:54 2001
@@ -1,10 +1,10 @@
/*
- * BK Id: SCCS/s.gemini_pci.c 1.5 05/17/01 18:14:21 cort
+ * BK Id: SCCS/s.gemini_pci.c 1.6 10/11/01 08:51:46 trini
*/
#include
#include
#include
-#include
+#include
#include
#include
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/gemini_setup.c linux/arch/ppc/kernel/gemini_setup.c
--- v2.4.13/linux/arch/ppc/kernel/gemini_setup.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/gemini_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.gemini_setup.c 1.11 08/20/01 14:34:41 paulus
+ * BK Id: SCCS/s.gemini_setup.c 1.14 10/18/01 11:16:28 trini
*/
/*
* linux/arch/ppc/kernel/setup.c
@@ -150,6 +150,9 @@
void
gemini_heartbeat(void)
{
+ /* We only want to do this on 1 CPU */
+ if ( smp_processor_id() )
+ return;
static unsigned long led = GEMINI_LEDBASE+(4*8);
static char direction = 8;
*(char *)led = 0;
@@ -506,8 +509,8 @@
static void
smp_gemini_kick_cpu(int nr)
{
- openpic_init_processor( 1<
#include
#include
+#include
#ifdef CONFIG_APUS
#include
@@ -1083,7 +1084,7 @@
copy_and_flush:
addi r5,r5,-4
addi r6,r6,-4
-4: li r0,CACHE_LINE_SIZE/4
+4: li r0,L1_CACHE_LINE_SIZE/4
mtctr r0
3: addi r6,r6,4 /* copy a cache line */
lwzx r0,r6,r4
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/head_8xx.S linux/arch/ppc/kernel/head_8xx.S
--- v2.4.13/linux/arch/ppc/kernel/head_8xx.S Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/head_8xx.S Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.head_8xx.S 1.21 08/28/01 16:27:27 trini
+ * BK Id: SCCS/s.head_8xx.S 1.23 09/16/01 19:32:54 trini
*/
/*
* arch/ppc/kernel/except_8xx.S
@@ -352,16 +352,21 @@
mtspr MD_TWC, r21 /* Load pte table base address */
mfspr r21, MD_TWC /* ....and get the pte address */
lwz r20, 0(r21) /* Get the pte */
-#if 0
+
ori r20, r20, _PAGE_ACCESSED
stw r20, 0(r21)
-#endif
- /* Set four subpage valid bits (24, 25, 26, and 27).
- * Clear bit 28 (which should be in the PTE, but we do this anyway).
+ /* The Linux PTE won't go exactly into the MMU TLB.
+ * Software indicator bits 21, 22 and 28 must be clear.
+ * Software indicator bits 24, 25, 26, and 27 must be
+ * set. All other Linux PTE bits control the behavior
+ * of the MMU.
*/
+ li r21, 0x0600
+ andc r20, r20, r21 /* Clear 21, 22 */
li r21, 0x00f0
- rlwimi r20, r21, 0, 24, 28
+ rlwimi r20, r21, 0, 24, 28 /* Set 24-27, clear 28 */
+
#ifdef CONFIG_8xx_CPU6
li r3, 0x2d80
stw r3, 12(r0)
@@ -441,21 +446,21 @@
#endif
mtspr MD_TWC, r21
- /* Set PP0 to PP1 (== _PAGE_USER) & ~_PAGE_RW */
- rlwimi r20, r20, 32-1, 21, 21
- rlwinm r21, r20, 4, 21, 21
- andc r20, r20, r21
+ mfspr r21, MD_TWC /* get the pte address again */
+ ori r20, r20, _PAGE_ACCESSED
+ stw r20, 0(r21)
- /* Set four subpage valid bits (24, 25, 26, and 27).
- * Clear bit 28 (which should be in the PTE, but we do this anyway).
+ /* The Linux PTE won't go exactly into the MMU TLB.
+ * Software indicator bits 21, 22 and 28 must be clear.
+ * Software indicator bits 24, 25, 26, and 27 must be
+ * set. All other Linux PTE bits control the behavior
+ * of the MMU.
*/
-#if 0
- ori r20, r20, 0x00f0
-#else
+ li r21, 0x0600
+ andc r20, r20, r21 /* Clear 21, 22 */
li r21, 0x00f0
- rlwimi r20, r21, 0, 24, 28
+ rlwimi r20, r21, 0, 24, 28 /* Set 24-27, clear 28 */
-#endif
#ifdef CONFIG_8xx_CPU6
li r3, 0x3d80
stw r3, 12(r0)
@@ -549,15 +554,21 @@
/* Update 'changed', among others.
*/
- ori r20, r20, _PAGE_DIRTY|_PAGE_ACCESSED
+ ori r20, r20, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
mfspr r21, MD_TWC /* Get pte address again */
stw r20, 0(r21) /* and update pte in table */
- /* Set four subpage valid bits (24, 25, 26, and 27).
- * Clear bit 28 (which should be in the PTE, but we do this anyway).
+ /* The Linux PTE won't go exactly into the MMU TLB.
+ * Software indicator bits 21, 22 and 28 must be clear.
+ * Software indicator bits 24, 25, 26, and 27 must be
+ * set. All other Linux PTE bits control the behavior
+ * of the MMU.
*/
+ li r21, 0x0600
+ andc r20, r20, r21 /* Clear 21, 22 */
li r21, 0x00f0
- rlwimi r20, r21, 0, 24, 28
+ rlwimi r20, r21, 0, 24, 28 /* Set 24-27, clear 28 */
+
#ifdef CONFIG_8xx_CPU6
li r3, 0x3d80
stw r3, 12(r0)
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/idle.c linux/arch/ppc/kernel/idle.c
--- v2.4.13/linux/arch/ppc/kernel/idle.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/idle.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.idle.c 1.14 08/15/01 22:43:06 paulus
+ * BK Id: SCCS/s.idle.c 1.16 10/16/01 15:58:42 trini
*/
/*
* Idle daemon for PowerPC. Idle daemon will handle any action
@@ -58,14 +58,13 @@
init_idle();
for (;;) {
#ifdef CONFIG_SMP
- int oldval;
if (!do_power_save) {
/*
* Deal with another CPU just having chosen a thread to
* run here:
*/
- oldval = xchg(¤t->need_resched, -1);
+ int oldval = xchg(¤t->need_resched, -1);
if (!oldval) {
while(current->need_resched == -1)
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/m8260_setup.c linux/arch/ppc/kernel/m8260_setup.c
--- v2.4.13/linux/arch/ppc/kernel/m8260_setup.c Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/kernel/m8260_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.m8260_setup.c 1.26 09/22/01 11:33:22 trini
+ * BK Id: SCCS/s.m8260_setup.c 1.28 10/18/01 11:16:28 trini
*/
/*
* linux/arch/ppc/kernel/setup.c
@@ -49,19 +49,14 @@
#include "ppc8260_pic.h"
static int m8260_set_rtc_time(unsigned long time);
-unsigned long m8260_get_rtc_time(void);
-void m8260_calibrate_decr(void);
-
-extern unsigned long loops_per_jiffy;
+static unsigned long m8260_get_rtc_time(void);
+static void m8260_calibrate_decr(void);
unsigned char __res[sizeof(bd_t)];
-extern char saved_command_line[256];
-
-extern unsigned long find_available_memory(void);
extern void m8260_cpm_reset(void);
-void __init
+static void __init
m8260_setup_arch(void)
{
/* Reset the Communication Processor Module.
@@ -69,7 +64,7 @@
m8260_cpm_reset();
}
-void
+static void
abort(void)
{
#ifdef CONFIG_XMON
@@ -82,7 +77,8 @@
/* The decrementer counts at the system (internal) clock frequency
* divided by four.
*/
-void __init m8260_calibrate_decr(void)
+static void __init
+m8260_calibrate_decr(void)
{
bd_t *binfo = (bd_t *)__res;
int freq, divisor;
@@ -98,14 +94,14 @@
*/
static uint rtc_time;
-static int
+static static int
m8260_set_rtc_time(unsigned long time)
{
rtc_time = time;
return(0);
}
-unsigned long
+static unsigned long
m8260_get_rtc_time(void)
{
@@ -114,7 +110,7 @@
return((unsigned long)rtc_time);
}
-void
+static void
m8260_restart(char *cmd)
{
extern void m8260_gorom(bd_t *bi, uint addr);
@@ -134,20 +130,21 @@
m8260_gorom((unsigned int)__pa(__res), startaddr);
}
-void
+static void
m8260_power_off(void)
{
m8260_restart(NULL);
}
-void
+static void
m8260_halt(void)
{
m8260_restart(NULL);
}
-int m8260_setup_residual(char *buffer)
+static int
+m8260_setup_residual(char *buffer)
{
int len = 0;
bd_t *bp;
@@ -170,7 +167,7 @@
* External interrupts can be either edge or level triggered, and
* need to be initialized by the appropriate driver.
*/
-void __init
+static void __init
m8260_init_IRQ(void)
{
int i;
@@ -195,7 +192,8 @@
/*
* Same hack as 8xx
*/
-unsigned long __init m8260_find_end_of_memory(void)
+static unsigned long __init
+m8260_find_end_of_memory(void)
{
bd_t *binfo;
extern unsigned char __res[];
@@ -241,35 +239,33 @@
strcpy(cmd_line, (char *)(r6+KERNELBASE));
}
- ppc_md.setup_arch = m8260_setup_arch;
- ppc_md.setup_residual = m8260_setup_residual;
- ppc_md.get_cpuinfo = NULL;
- ppc_md.irq_cannonicalize = NULL;
- ppc_md.init_IRQ = m8260_init_IRQ;
- ppc_md.get_irq = m8260_get_irq;
- ppc_md.init = NULL;
-
- ppc_md.restart = m8260_restart;
- ppc_md.power_off = m8260_power_off;
- ppc_md.halt = m8260_halt;
-
- ppc_md.time_init = NULL;
- ppc_md.set_rtc_time = m8260_set_rtc_time;
- ppc_md.get_rtc_time = m8260_get_rtc_time;
- ppc_md.calibrate_decr = m8260_calibrate_decr;
-
- ppc_md.find_end_of_memory = m8260_find_end_of_memory;
- ppc_md.setup_io_mappings = m8260_map_io;
-
- ppc_md.kbd_setkeycode = NULL;
- ppc_md.kbd_getkeycode = NULL;
- ppc_md.kbd_translate = NULL;
- ppc_md.kbd_unexpected_up = NULL;
- ppc_md.kbd_leds = NULL;
- ppc_md.kbd_init_hw = NULL;
-#ifdef CONFIG_MAGIC_SYSRQ
- ppc_md.kbd_sysrq_xlate = NULL;
-#endif
+ ppc_md.setup_arch = m8260_setup_arch;
+ ppc_md.setup_residual = m8260_setup_residual;
+ ppc_md.get_cpuinfo = NULL;
+ ppc_md.irq_cannonicalize = NULL;
+ ppc_md.init_IRQ = m8260_init_IRQ;
+ ppc_md.get_irq = m8260_get_irq;
+ ppc_md.init = NULL;
+
+ ppc_md.restart = m8260_restart;
+ ppc_md.power_off = m8260_power_off;
+ ppc_md.halt = m8260_halt;
+
+ ppc_md.time_init = NULL;
+ ppc_md.set_rtc_time = m8260_set_rtc_time;
+ ppc_md.get_rtc_time = m8260_get_rtc_time;
+ ppc_md.calibrate_decr = m8260_calibrate_decr;
+
+ ppc_md.find_end_of_memory = m8260_find_end_of_memory;
+ ppc_md.setup_io_mappings = m8260_map_io;
+
+ ppc_md.kbd_setkeycode = NULL;
+ ppc_md.kbd_getkeycode = NULL;
+ ppc_md.kbd_translate = NULL;
+ ppc_md.kbd_unexpected_up = NULL;
+ ppc_md.kbd_leds = NULL;
+ ppc_md.kbd_init_hw = NULL;
+ ppc_md.ppc_kbd_sysrq_xlate = NULL;
}
/* Mainly for ksyms.
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/m8xx_setup.c linux/arch/ppc/kernel/m8xx_setup.c
--- v2.4.13/linux/arch/ppc/kernel/m8xx_setup.c Tue Oct 23 22:48:49 2001
+++ linux/arch/ppc/kernel/m8xx_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.m8xx_setup.c 1.35 10/11/01 11:55:47 trini
+ * BK Id: SCCS/s.m8xx_setup.c 1.38 10/18/01 11:16:28 trini
*
* linux/arch/ppc/kernel/setup.c
*
@@ -60,8 +60,6 @@
extern int rd_image_start; /* starting block # of image */
#endif
-extern char saved_command_line[256];
-
extern unsigned long find_available_memory(void);
extern void m8xx_cpm_reset(uint);
@@ -373,35 +371,33 @@
strcpy(cmd_line, (char *)(r6+KERNELBASE));
}
- ppc_md.setup_arch = m8xx_setup_arch;
- ppc_md.setup_residual = m8xx_setup_residual;
- ppc_md.get_cpuinfo = NULL;
- ppc_md.irq_cannonicalize = NULL;
- ppc_md.init_IRQ = m8xx_init_IRQ;
- ppc_md.get_irq = m8xx_get_irq;
- ppc_md.init = NULL;
-
- ppc_md.restart = m8xx_restart;
- ppc_md.power_off = m8xx_power_off;
- ppc_md.halt = m8xx_halt;
-
- ppc_md.time_init = NULL;
- ppc_md.set_rtc_time = m8xx_set_rtc_time;
- ppc_md.get_rtc_time = m8xx_get_rtc_time;
- ppc_md.calibrate_decr = m8xx_calibrate_decr;
-
- ppc_md.find_end_of_memory = m8xx_find_end_of_memory;
- ppc_md.setup_io_mappings = m8xx_map_io;
-
- ppc_md.kbd_setkeycode = NULL;
- ppc_md.kbd_getkeycode = NULL;
- ppc_md.kbd_translate = NULL;
- ppc_md.kbd_unexpected_up = NULL;
- ppc_md.kbd_leds = NULL;
- ppc_md.kbd_init_hw = NULL;
-#ifdef CONFIG_MAGIC_SYSRQ
- ppc_md.ppc_kbd_sysrq_xlate = NULL;
-#endif
+ ppc_md.setup_arch = m8xx_setup_arch;
+ ppc_md.setup_residual = m8xx_setup_residual;
+ ppc_md.get_cpuinfo = NULL;
+ ppc_md.irq_cannonicalize = NULL;
+ ppc_md.init_IRQ = m8xx_init_IRQ;
+ ppc_md.get_irq = m8xx_get_irq;
+ ppc_md.init = NULL;
+
+ ppc_md.restart = m8xx_restart;
+ ppc_md.power_off = m8xx_power_off;
+ ppc_md.halt = m8xx_halt;
+
+ ppc_md.time_init = NULL;
+ ppc_md.set_rtc_time = m8xx_set_rtc_time;
+ ppc_md.get_rtc_time = m8xx_get_rtc_time;
+ ppc_md.calibrate_decr = m8xx_calibrate_decr;
+
+ ppc_md.find_end_of_memory = m8xx_find_end_of_memory;
+ ppc_md.setup_io_mappings = m8xx_map_io;
+
+ ppc_md.kbd_setkeycode = NULL;
+ ppc_md.kbd_getkeycode = NULL;
+ ppc_md.kbd_translate = NULL;
+ ppc_md.kbd_unexpected_up = NULL;
+ ppc_md.kbd_leds = NULL;
+ ppc_md.kbd_init_hw = NULL;
+ ppc_md.ppc_kbd_sysrq_xlate = NULL;
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
m8xx_ide_init();
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/misc.S linux/arch/ppc/kernel/misc.S
--- v2.4.13/linux/arch/ppc/kernel/misc.S Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/misc.S Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.misc.S 1.28 08/24/01 20:07:37 paulus
+ * BK Id: SCCS/s.misc.S 1.32 10/18/01 17:29:53 trini
*/
/*
* This file contains miscellaneous low-level functions.
@@ -385,21 +385,21 @@
rlwinm r5,r5,16,16,31
cmpi 0,r5,1
beqlr /* for 601, do nothing */
- li r5,CACHE_LINE_SIZE-1
+ li r5,L1_CACHE_LINE_SIZE-1
andc r3,r3,r5
subf r4,r3,r4
add r4,r4,r5
- srwi. r4,r4,LG_CACHE_LINE_SIZE
+ srwi. r4,r4,LG_L1_CACHE_LINE_SIZE
beqlr
mtctr r4
mr r6,r3
1: dcbst 0,r3
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
sync /* wait for dcbst's to get to ram */
mtctr r4
2: icbi 0,r6
- addi r6,r6,CACHE_LINE_SIZE
+ addi r6,r6,L1_CACHE_LINE_SIZE
bdnz 2b
sync /* additional sync needed on g4 */
isync
@@ -412,37 +412,37 @@
* clean_dcache_range(unsigned long start, unsigned long stop)
*/
_GLOBAL(clean_dcache_range)
- li r5,CACHE_LINE_SIZE-1
+ li r5,L1_CACHE_LINE_SIZE-1
andc r3,r3,r5
subf r4,r3,r4
add r4,r4,r5
- srwi. r4,r4,LG_CACHE_LINE_SIZE
+ srwi. r4,r4,LG_L1_CACHE_LINE_SIZE
beqlr
mtctr r4
1: dcbst 0,r3
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
sync /* wait for dcbst's to get to ram */
blr
/*
- * Write any modified data cache blocks out to memory
- * and invalidate the corresponding instruction cache blocks.
+ * Write any modified data cache blocks out to memory and invalidate them.
+ * Does not invalidate the corresponding instruction cache blocks.
*
* flush_dcache_range(unsigned long start, unsigned long stop)
*/
_GLOBAL(flush_dcache_range)
- li r5,CACHE_LINE_SIZE-1
+ li r5,L1_CACHE_LINE_SIZE-1
andc r3,r3,r5
subf r4,r3,r4
add r4,r4,r5
- srwi. r4,r4,LG_CACHE_LINE_SIZE
+ srwi. r4,r4,LG_L1_CACHE_LINE_SIZE
beqlr
mtctr r4
1: dcbf 0,r3
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
sync /* wait for dcbst's to get to ram */
blr
@@ -455,16 +455,16 @@
* invalidate_dcache_range(unsigned long start, unsigned long stop)
*/
_GLOBAL(invalidate_dcache_range)
- li r5,CACHE_LINE_SIZE-1
+ li r5,L1_CACHE_LINE_SIZE-1
andc r3,r3,r5
subf r4,r3,r4
add r4,r4,r5
- srwi. r4,r4,LG_CACHE_LINE_SIZE
+ srwi. r4,r4,LG_L1_CACHE_LINE_SIZE
beqlr
mtctr r4
1: dcbi 0,r3
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
sync /* wait for dcbi's to get to ram */
blr
@@ -481,18 +481,18 @@
mfspr r5,PVR
rlwinm r5,r5,16,16,31
cmpi 0,r5,1
- beqlr /* for 601, do nothing */
- rlwinm r3,r3,0,0,19 /* Get page base address */
- li r4,4096/CACHE_LINE_SIZE /* Number of lines in a page */
+ beqlr /* for 601, do nothing */
+ rlwinm r3,r3,0,0,19 /* Get page base address */
+ li r4,4096/L1_CACHE_LINE_SIZE /* Number of lines in a page */
mtctr r4
mr r6,r3
-0: dcbst 0,r3 /* Write line to ram */
- addi r3,r3,CACHE_LINE_SIZE
+0: dcbst 0,r3 /* Write line to ram */
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 0b
sync
mtctr r4
1: icbi 0,r6
- addi r6,r6,CACHE_LINE_SIZE
+ addi r6,r6,L1_CACHE_LINE_SIZE
bdnz 1b
sync
isync
@@ -510,11 +510,11 @@
mfspr r5,PVR
rlwinm r5,r5,16,16,31
cmpi 0,r5,1
- beqlr /* for 601, do nothing */
- li r4,4096/CACHE_LINE_SIZE /* Number of lines in a page */
+ beqlr /* for 601, do nothing */
+ li r4,4096/L1_CACHE_LINE_SIZE /* Number of lines in a page */
mtctr r4
1: icbi 0,r3
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
sync
isync
@@ -526,7 +526,7 @@
* displaced). This only works on cacheable memory.
*/
_GLOBAL(clear_page)
- li r0,4096/CACHE_LINE_SIZE
+ li r0,4096/L1_CACHE_LINE_SIZE
mtctr r0
#ifdef CONFIG_8xx
li r4, 0
@@ -537,7 +537,7 @@
#else
1: dcbz 0,r3
#endif
- addi r3,r3,CACHE_LINE_SIZE
+ addi r3,r3,L1_CACHE_LINE_SIZE
bdnz 1b
blr
@@ -563,20 +563,20 @@
li r5,4
#ifndef CONFIG_8xx
-#if MAX_COPY_PREFETCH > 1
- li r0,MAX_COPY_PREFETCH
+#if MAX_L1_COPY_PREFETCH > 1
+ li r0,MAX_L1_COPY_PREFETCH
li r11,4
mtctr r0
11: dcbt r11,r4
- addi r11,r11,CACHE_LINE_SIZE
+ addi r11,r11,L1_CACHE_LINE_SIZE
bdnz 11b
-#else /* MAX_COPY_PREFETCH == 1 */
+#else /* MAX_L1_COPY_PREFETCH == 1 */
dcbt r5,r4
- li r11,CACHE_LINE_SIZE+4
-#endif /* MAX_COPY_PREFETCH */
+ li r11,L1_CACHE_LINE_SIZE+4
+#endif /* MAX_L1_COPY_PREFETCH */
#endif /* CONFIG_8xx */
- li r0,4096/CACHE_LINE_SIZE
+ li r0,4096/L1_CACHE_LINE_SIZE
mtctr r0
1:
#ifndef CONFIG_8xx
@@ -584,12 +584,12 @@
dcbz r5,r3
#endif
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
COPY_16_BYTES
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
COPY_16_BYTES
COPY_16_BYTES
COPY_16_BYTES
@@ -1104,22 +1104,23 @@
.long sys_ni_syscall /* streams2 */
.long sys_vfork
.long sys_getrlimit /* 190 */
- .long sys_ni_syscall /* 191 */ /* Unused */
- .long sys_mmap2 /* 192 */
- .long sys_truncate64 /* 193 */
- .long sys_ftruncate64 /* 194 */
- .long sys_stat64 /* 195 */
- .long sys_lstat64 /* 196 */
- .long sys_fstat64 /* 197 */
- .long sys_pciconfig_read /* 198 */
- .long sys_pciconfig_write /* 199 */
+ .long sys_readahead
+ .long sys_mmap2
+ .long sys_truncate64
+ .long sys_ftruncate64
+ .long sys_stat64 /* 195 */
+ .long sys_lstat64
+ .long sys_fstat64
+ .long sys_pciconfig_read
+ .long sys_pciconfig_write
.long sys_pciconfig_iobase /* 200 */
.long sys_ni_syscall /* 201 - reserved - MacOnLinux - new */
- .long sys_getdents64 /* 202 */
- .long sys_pivot_root /* 203 */
- .long sys_fcntl64 /* 204 */
- .long sys_madvise /* 205 */
- .long sys_mincore /* 206 */
+ .long sys_getdents64
+ .long sys_pivot_root
+ .long sys_fcntl64
+ .long sys_madvise /* 205 */
+ .long sys_mincore
+ .long sys_gettid
.rept NR_syscalls-(.-sys_call_table)/4
.long sys_ni_syscall
.endr
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/oak_setup.c linux/arch/ppc/kernel/oak_setup.c
--- v2.4.13/linux/arch/ppc/kernel/oak_setup.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/oak_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.oak_setup.c 1.8 08/15/01 21:48:38 paulus
+ * BK Id: SCCS/s.oak_setup.c 1.10 10/18/01 11:16:28 trini
*/
/*
*
@@ -128,12 +128,7 @@
ppc_md.kbd_unexpected_up = NULL;
ppc_md.kbd_leds = NULL;
ppc_md.kbd_init_hw = NULL;
-
-#if defined(CONFIG_MAGIC_SYSRQ)
ppc_md.ppc_kbd_sysrq_xlate = NULL;
-#endif
-
- return;
}
/*
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/open_pic.c linux/arch/ppc/kernel/open_pic.c
--- v2.4.13/linux/arch/ppc/kernel/open_pic.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/open_pic.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.open_pic.c 1.28 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.open_pic.c 1.31 10/11/01 12:09:11 trini
*/
/*
* arch/ppc/kernel/open_pic.c -- OpenPIC Interrupt Handling
@@ -515,10 +515,9 @@
#define physmask(cpumask) (cpumask)
#endif
-void openpic_init_processor(u_int cpumask)
+void openpic_reset_processor_phys(u_int mask)
{
- openpic_write(&OpenPIC->Global.Processor_Initialization,
- physmask(cpumask));
+ openpic_write(&OpenPIC->Global.Processor_Initialization, mask);
}
static spinlock_t openpic_setup_lock = SPIN_LOCK_UNLOCKED;
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/open_pic.h linux/arch/ppc/kernel/open_pic.h
--- v2.4.13/linux/arch/ppc/kernel/open_pic.h Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/open_pic.h Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.open_pic.h 1.12 08/20/01 22:33:28 paulus
+ * BK Id: SCCS/s.open_pic.h 1.14 10/11/01 12:09:12 trini
*/
/*
* arch/ppc/kernel/open_pic.h -- OpenPIC Interrupt Handling
@@ -46,7 +46,7 @@
extern void openpic_request_IPIs(void);
extern void do_openpic_setup_cpu(void);
extern int openpic_get_irq(struct pt_regs *regs);
-extern void openpic_init_processor(u_int cpumask);
+extern void openpic_reset_processor_phys(u_int cpumask);
extern void openpic_setup_ISU(int isu_num, unsigned long addr);
extern void openpic_cause_IPI(u_int ipi, u_int cpumask);
extern void smp_openpic_message_pass(int target, int msg, unsigned long data,
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/pci.c linux/arch/ppc/kernel/pci.c
--- v2.4.13/linux/arch/ppc/kernel/pci.c Mon Aug 27 12:41:39 2001
+++ linux/arch/ppc/kernel/pci.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.pci.c 1.28 08/08/01 16:35:43 paulus
+ * BK Id: SCCS/s.pci.c 1.31 11/01/01 12:24:55 trini
*/
/*
* Common pmac/prep/chrp pci routines. -- Cort
@@ -39,6 +39,8 @@
unsigned long isa_io_base = 0;
unsigned long isa_mem_base = 0;
unsigned long pci_dram_offset = 0;
+
+void pcibios_make_OF_bus_map(void);
static void pcibios_fixup_resources(struct pci_dev* dev);
static void fixup_broken_pcnet32(struct pci_dev* dev);
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/pmac_setup.c linux/arch/ppc/kernel/pmac_setup.c
--- v2.4.13/linux/arch/ppc/kernel/pmac_setup.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/pmac_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.pmac_setup.c 1.39 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.pmac_setup.c 1.41 10/18/01 11:16:28 trini
*/
/*
* linux/arch/ppc/kernel/setup.c
@@ -94,11 +94,9 @@
char raw_mode);
extern char mac_hid_kbd_unexpected_up(unsigned char keycode);
extern void mac_hid_init_hw(void);
-#ifdef CONFIG_MAGIC_SYSRQ
-extern unsigned char mac_hid_kbd_sysrq_xlate[128];
-extern unsigned char pckbd_sysrq_xlate[128];
-extern unsigned char mackbd_sysrq_xlate[128];
-#endif /* CONFIG_MAGIC_SYSRQ */
+extern unsigned char mac_hid_kbd_sysrq_xlate[];
+extern unsigned char pckbd_sysrq_xlate[];
+extern unsigned char mackbd_sysrq_xlate[];
extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
extern int pckbd_getkeycode(unsigned int scancode);
extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/ppc_asm.h linux/arch/ppc/kernel/ppc_asm.h
--- v2.4.13/linux/arch/ppc/kernel/ppc_asm.h Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/ppc_asm.h Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.ppc_asm.h 1.16 08/15/01 22:43:06 paulus
+ * BK Id: SCCS/s.ppc_asm.h 1.18 10/18/01 15:02:09 trini
*/
/*
* arch/ppc/kernel/ppc_asm.h
@@ -156,22 +156,3 @@
#define MTMSRD(r) mtmsr r
#define CLR_TOP32(r)
#endif /* CONFIG_PPC64BRIDGE */
-
-/*
- * Defines for cache-line size etc.
- */
-#if defined(CONFIG_4xx) || defined(CONFIG_8xx)
-#define CACHE_LINE_SIZE 16
-#define LG_CACHE_LINE_SIZE 4
-#define MAX_COPY_PREFETCH 1
-
-#elif !defined(CONFIG_PPC64BRIDGE)
-#define CACHE_LINE_SIZE 32
-#define LG_CACHE_LINE_SIZE 5
-#define MAX_COPY_PREFETCH 4
-
-#else
-#define CACHE_LINE_SIZE 128
-#define LG_CACHE_LINE_SIZE 7
-#define MAX_COPY_PREFETCH 1
-#endif /* CONFIG_4xx || CONFIG_8xx */
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/ppc_htab.c linux/arch/ppc/kernel/ppc_htab.c
--- v2.4.13/linux/arch/ppc/kernel/ppc_htab.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/ppc_htab.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.ppc_htab.c 1.17 08/20/01 22:59:41 paulus
+ * BK Id: SCCS/s.ppc_htab.c 1.19 10/16/01 15:58:42 trini
*/
/*
* PowerPC hash table management proc entry. Will show information
@@ -115,10 +115,13 @@
size_t count, loff_t *ppos)
{
unsigned long mmcr0 = 0, pmc1 = 0, pmc2 = 0;
- int n = 0, valid;
+ int n = 0;
+#ifdef CONFIG_PPC_STD_MMU
+ int valid;
unsigned int kptes = 0, uptes = 0, zombie_ptes = 0;
PTE *ptr;
struct task_struct *p;
+#endif /* CONFIG_PPC_STD_MMU */
char buffer[512];
if (count < 0)
@@ -206,9 +209,9 @@
"Evicts\t\t: %lu\n",
htab_reloads, htab_preloads, htab_hash_searches,
primary_pteg_full, htab_evicts);
+return_string:
#endif /* CONFIG_PPC_STD_MMU */
-return_string:
n += sprintf( buffer + n,
"Non-error misses: %lu\n"
"Error misses\t: %lu\n",
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/ppc_ksyms.c linux/arch/ppc/kernel/ppc_ksyms.c
--- v2.4.13/linux/arch/ppc/kernel/ppc_ksyms.c Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/kernel/ppc_ksyms.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.ppc_ksyms.c 1.55 10/02/01 12:33:42 trini
+ * BK Id: SCCS/s.ppc_ksyms.c 1.57 10/16/01 15:58:42 trini
*/
#include
#include
@@ -351,7 +351,7 @@
EXPORT_SYMBOL(set_context);
EXPORT_SYMBOL(handle_mm_fault); /* For MOL */
EXPORT_SYMBOL_NOVERS(disarm_decr);
-#if !defined(CONFIG_8xx) && !defined(CONFIG_4xx)
+#ifdef CONFIG_PPC_STD_MMU
EXPORT_SYMBOL(flush_hash_page); /* For MOL */
extern long *intercept_table;
EXPORT_SYMBOL(intercept_table);
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/prep_setup.c linux/arch/ppc/kernel/prep_setup.c
--- v2.4.13/linux/arch/ppc/kernel/prep_setup.c Tue Oct 23 22:48:49 2001
+++ linux/arch/ppc/kernel/prep_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.prep_setup.c 1.38 09/15/01 09:13:52 trini
+ * BK Id: SCCS/s.prep_setup.c 1.41 10/18/01 11:16:28 trini
*/
/*
* linux/arch/ppc/kernel/setup.c
@@ -86,14 +86,14 @@
extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
extern int pckbd_getkeycode(unsigned int scancode);
extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
- char raw_mode);
+ char raw_mode);
extern char pckbd_unexpected_up(unsigned char keycode);
extern void pckbd_leds(unsigned char leds);
extern void pckbd_init_hw(void);
-extern unsigned char pckbd_sysrq_xlate[128];
+extern unsigned char pckbd_sysrq_xlate[];
extern void prep_find_bridges(void);
-extern char saved_command_line[256];
+extern char saved_command_line[];
int _prep_type;
@@ -121,7 +121,7 @@
EXPORT_SYMBOL(ppc_cs4232_dma2);
#endif
-int __prep
+static int __prep
prep_get_cpuinfo(char *buffer)
{
extern char *Motherboard_map_name;
@@ -131,11 +131,11 @@
#endif
#ifdef CONFIG_SMP
-#define CD(X) (cpu_data[n].X)
+#define CD(X) (cpu_data[n].X)
#else
#define CD(X) (X)
#endif
-
+
len = sprintf(buffer,"machine\t\t: PReP %s\n",Motherboard_map_name);
@@ -151,9 +151,10 @@
goto no_l2;
}
len += sprintf(buffer+len,"%sKb,",
- (((*(unsigned char *)0x8000080d)>>2)&1)?"512":"256");
+ (((*(unsigned char *)0x8000080d)>>2)&1)
+ ? "512" : "256");
len += sprintf(buffer+len,"%ssync\n",
- ((*(unsigned char *)0x8000080d)>>7) ? "":"a");
+ ((*(unsigned char *)0x8000080d)>>7) ? "" : "a");
break;
case _PREP_Motorola:
len += sprintf(buffer+len,"L2\t\t: ");
@@ -174,26 +175,26 @@
break;
default:
len += sprintf(buffer+len, "%x\n",
- *((unsigned char *)CACHECRBA));
+ *((unsigned char *)CACHECRBA));
}
len += sprintf(buffer+len,",parity %s",
- (*((unsigned char *)CACHECRBA) & L2CACHE_PARITY) ?
- "enabled" : "disabled");
-
+ (*((unsigned char *)CACHECRBA) & L2CACHE_PARITY)
+ ? "enabled" : "disabled");
+
len += sprintf(buffer+len, " SRAM:");
switch ( ((*((unsigned char *)CACHECRBA) & 0xf0) >> 4) & ~(0x3) )
{
case 1: len += sprintf(buffer+len,
- "synchronous,parity,flow-through\n");
+ "synchronous,parity,flow-through\n");
break;
case 2: len += sprintf(buffer+len,"asynchronous,no parity\n");
break;
case 3: len += sprintf(buffer+len,"asynchronous,parity\n");
break;
default:len += sprintf(buffer+len,
- "synchronous,pipelined,no parity\n");
+ "synchronous,pipelined,no parity\n");
break;
}
break;
@@ -214,17 +215,17 @@
for ( i = 0 ; (res->ActualNumMemories) && (i < MAX_MEMS) ; i++ )
{
if ( res->Memories[i].SIMMSize != 0 )
- len += sprintf(buffer+len,"%d:%ldM ",i,
- (res->Memories[i].SIMMSize > 1024) ?
- res->Memories[i].SIMMSize>>20 :
- res->Memories[i].SIMMSize);
+ len += sprintf(buffer+len,"%d:%ldM ", i,
+ (res->Memories[i].SIMMSize > 1024) ?
+ res->Memories[i].SIMMSize>>20 :
+ res->Memories[i].SIMMSize);
}
len += sprintf(buffer+len,"\n");
return len;
#endif
}
-void __init
+static void __init
prep_setup_arch(void)
{
unsigned char reg;
@@ -277,20 +278,19 @@
break;
}
- /* Read in NVRAM data */
- init_prep_nvram();
-
- /* if no bootargs, look in NVRAM */
- if ( cmd_line[0] == '\0' ) {
- char *bootargs;
- bootargs = prep_nvram_get_var("bootargs");
- if (bootargs != NULL) {
- strcpy(cmd_line, bootargs);
-
- /* again.. */
- strcpy(saved_command_line, cmd_line);
- }
- }
+ /* Read in NVRAM data */
+ init_prep_nvram();
+
+ /* if no bootargs, look in NVRAM */
+ if ( cmd_line[0] == '\0' ) {
+ char *bootargs;
+ bootargs = prep_nvram_get_var("bootargs");
+ if (bootargs != NULL) {
+ strcpy(cmd_line, bootargs);
+ /* again.. */
+ strcpy(saved_command_line, cmd_line);
+ }
+ }
#ifdef CONFIG_SOUND_CS4232
/*
@@ -303,11 +303,11 @@
if ( _machine == _MACH_prep )
{
extern struct card_info snd_installed_cards[];
- struct card_info *snd_ptr;
+ struct card_info *snd_ptr;
for ( snd_ptr = snd_installed_cards;
- snd_ptr < &snd_installed_cards[num_sound_cards];
- snd_ptr++ )
+ snd_ptr < &snd_installed_cards[num_sound_cards];
+ snd_ptr++ )
{
if ( snd_ptr->card_type == SNDCARD_CS4232 )
{
@@ -321,7 +321,7 @@
if ( _prep_type == _PREP_IBM )
{
snd_ptr->config.io_base = 0x530;
- snd_ptr->config.irq = 5;
+ snd_ptr->config.irq = 5;
snd_ptr->config.dma = ppc_cs4232_dma = 1;
/* this is wrong - but leave it for now */
snd_ptr->config.dma2 = ppc_cs4232_dma2 = 7;
@@ -357,17 +357,23 @@
* This allows for a faster boot as we do not need to calibrate the
* decrementer against another clock. This is important for embedded systems.
*/
-void __init prep_res_calibrate_decr(void)
+static int __init
+prep_res_calibrate_decr(void)
{
-#ifdef CONFIG_PREP_RESIDUAL
- unsigned long freq, divisor=4;
+#ifdef CONFIG_PREP_RESIDUAL
+ unsigned long freq, divisor = 4;
- freq = res->VitalProductData.ProcessorBusHz;
- printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
- (freq/divisor)/1000000, (freq/divisor)%1000000);
- tb_ticks_per_jiffy = freq / HZ / divisor;
- tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+ if ( res->VitalProductData.ProcessorBusHz ) {
+ freq = res->VitalProductData.ProcessorBusHz;
+ printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
+ (freq/divisor)/1000000,
+ (freq/divisor)%1000000);
+ tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+ tb_ticks_per_jiffy = freq / HZ / divisor;
+ return 0;
+ } else
#endif
+ return 1;
}
/*
@@ -383,10 +389,8 @@
static volatile int calibrate_steps __initdata = 3;
static unsigned tbstamp __initdata = 0;
-void __init
-prep_calibrate_decr_handler(int irq,
- void *dev,
- struct pt_regs *regs)
+static void __init
+prep_calibrate_decr_handler(int irq, void *dev, struct pt_regs *regs)
{
unsigned long t, freq;
int step=--calibrate_steps;
@@ -397,44 +401,54 @@
} else {
freq = (t - tbstamp)*HZ;
printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
- freq/1000000, freq%1000000);
+ freq/1000000, freq%1000000);
tb_ticks_per_jiffy = freq / HZ;
tb_to_us = mulhwu_scale_factor(freq, 1000000);
}
}
-void __init prep_calibrate_decr(void)
+static void __init
+prep_calibrate_decr(void)
{
- unsigned long flags;
+ int res;
+
+ /* Try and get this from the residual data. */
+ res = prep_res_calibrate_decr();
+ /* If we didn't get it from the residual data, try this. */
+ if ( res ) {
+ unsigned long flags;
- save_flags(flags);
+ save_flags(flags);
#define TIMER0_COUNT 0x40
#define TIMER_CONTROL 0x43
- /* set timer to periodic mode */
- outb_p(0x34,TIMER_CONTROL);/* binary, mode 2, LSB/MSB, ch 0 */
- /* set the clock to ~100 Hz */
- outb_p(LATCH & 0xff , TIMER0_COUNT); /* LSB */
- outb(LATCH >> 8 , TIMER0_COUNT); /* MSB */
-
- if (request_irq(0, prep_calibrate_decr_handler, 0, "timer", NULL) != 0)
- panic("Could not allocate timer IRQ!");
- __sti();
- while ( calibrate_steps ) /* nothing */; /* wait for calibrate */
- restore_flags(flags);
- free_irq( 0, NULL);
+ /* set timer to periodic mode */
+ outb_p(0x34,TIMER_CONTROL);/* binary, mode 2, LSB/MSB, ch 0 */
+ /* set the clock to ~100 Hz */
+ outb_p(LATCH & 0xff , TIMER0_COUNT); /* LSB */
+ outb(LATCH >> 8 , TIMER0_COUNT); /* MSB */
+
+ if (request_irq(0, prep_calibrate_decr_handler, 0, "timer", NULL) != 0)
+ panic("Could not allocate timer IRQ!");
+ __sti();
+ /* wait for calibrate */
+ while ( calibrate_steps )
+ ;
+ restore_flags(flags);
+ free_irq( 0, NULL);
+ }
}
-
-static long __init mk48t59_init(void) {
+static long __init
+mk48t59_init(void) {
unsigned char tmp;
tmp = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLB);
if (tmp & MK48T59_RTC_CB_STOP) {
printk("Warning: RTC was stopped, date will be wrong.\n");
ppc_md.nvram_write_val(MK48T59_RTC_CONTROLB,
- tmp & ~MK48T59_RTC_CB_STOP);
+ tmp & ~MK48T59_RTC_CB_STOP);
/* Low frequency crystal oscillators may take a very long
* time to startup and stabilize. For now just ignore the
* the issue, but attempting to calibrate the decrementer
@@ -454,12 +468,13 @@
* the RTC registers have just been set up in the right state by the
* preceding routine.
*/
-void __init mk48t59_calibrate_decr(void)
+static void __init
+mk48t59_calibrate_decr(void)
{
unsigned long freq;
unsigned long t1;
- unsigned char save_control;
- long i;
+ unsigned char save_control;
+ long i;
unsigned char sec;
@@ -467,7 +482,7 @@
save_control = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLB);
ppc_md.nvram_write_val(MK48T59_RTC_CONTROLA,
- (save_control & (~MK48T59_RTC_CB_STOP)));
+ (save_control & (~MK48T59_RTC_CB_STOP)));
/* Now make sure the read bit is off so the value will change. */
save_control = ppc_md.nvram_read_val(MK48T59_RTC_CONTROLA);
@@ -484,27 +499,26 @@
* stamp with a loop count as parameter would be the solution.
*/
for (i = 0 ; i < 1000000 ; i++) { /* may take up to 1 second... */
- t1 = get_tbl();
- if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
- break;
- }
+ t1 = get_tbl();
+ if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
+ break;
+ }
}
sec = ppc_md.nvram_read_val(MK48T59_RTC_SECONDS);
for (i = 0 ; i < 1000000 ; i++) { /* Should take up 1 second... */
- freq = get_tbl()-t1;
- if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec) {
- break;
- }
+ freq = get_tbl()-t1;
+ if (ppc_md.nvram_read_val(MK48T59_RTC_SECONDS) != sec)
+ break;
}
printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
- freq/1000000, freq%1000000);
+ freq/1000000, freq%1000000);
tb_ticks_per_jiffy = freq / HZ;
tb_to_us = mulhwu_scale_factor(freq, 1000000);
}
-void __prep
+static void __prep
prep_restart(char *cmd)
{
unsigned long i = 10000;
@@ -523,33 +537,7 @@
panic("restart failed\n");
}
-/*
- * This function will restart a board regardless of port 92 functionality
- */
-void __prep
-prep_direct_restart(char *cmd)
-{
- u32 jumpaddr=0xfff00100;
- u32 defaultmsr=MSR_IP;
-
- /*
- * This will ALWAYS work regardless of port 92
- * functionality
- */
- __cli();
-
- __asm__ __volatile__("\n\
- mtspr 26, %1 /* SRR0 */ \n\
- mtspr 27, %0 /* SRR1 */ \n\
- rfi"
- :
- : "r" (defaultmsr), "r" (jumpaddr));
- /*
- * Not reached
- */
-}
-
-void __prep
+static void __prep
prep_halt(void)
{
unsigned long flags;
@@ -615,7 +603,7 @@
udelay(100); /* important: let controller recover */
}
-void __prep
+static void __prep
prep_power_off(void)
{
if ( _prep_type == _PREP_IBM) {
@@ -640,19 +628,19 @@
}
}
-int __prep
+static int __prep
prep_setup_residual(char *buffer)
{
- int len = 0;
+ int len = 0;
/* PREP's without residual data will give incorrect values here */
len += sprintf(len+buffer, "clock\t\t: ");
#ifdef CONFIG_PREP_RESIDUAL
if ( res->ResidualLength )
len += sprintf(len+buffer, "%ldMHz\n",
- (res->VitalProductData.ProcessorHz > 1024) ?
- res->VitalProductData.ProcessorHz>>20 :
- res->VitalProductData.ProcessorHz);
+ (res->VitalProductData.ProcessorHz > 1024) ?
+ res->VitalProductData.ProcessorHz>>20 :
+ res->VitalProductData.ProcessorHz);
else
#endif /* CONFIG_PREP_RESIDUAL */
len += sprintf(len+buffer, "???\n");
@@ -660,7 +648,7 @@
return len;
}
-u_int __prep
+static unsigned int __prep
prep_irq_cannonicalize(u_int irq)
{
if (irq == 2)
@@ -673,29 +661,29 @@
}
}
-int __prep
+static int __prep
prep_get_irq(struct pt_regs *regs)
{
return i8259_irq(smp_processor_id());
}
-void __init
+static void __init
prep_init_IRQ(void)
{
int i;
if (OpenPIC_Addr != NULL)
openpic_init(1, NUM_8259_INTERRUPTS, 0, -1);
- for ( i = 0 ; i < NUM_8259_INTERRUPTS ; i++ )
- irq_desc[i].handler = &i8259_pic;
- i8259_init();
+ for ( i = 0 ; i < NUM_8259_INTERRUPTS ; i++ )
+ irq_desc[i].handler = &i8259_pic;
+ i8259_init();
}
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
/*
* IDE stuff.
*/
-int __prep
+static int __prep
prep_ide_default_irq(ide_ioreg_t base)
{
switch (base) {
@@ -709,7 +697,7 @@
}
}
-ide_ioreg_t __prep
+static ide_ioreg_t __prep
prep_ide_default_io_base(int index)
{
switch (index) {
@@ -718,17 +706,17 @@
case 2: return 0x1e8;
case 3: return 0x168;
default:
- return 0;
+ return 0;
}
}
-int __prep
+static int __prep
prep_ide_check_region(ide_ioreg_t from, unsigned int extent)
{
- return check_region(from, extent);
+ return check_region(from, extent);
}
-void __prep
+static void __prep
prep_ide_request_region(ide_ioreg_t from,
unsigned int extent,
const char *name)
@@ -736,14 +724,14 @@
request_region(from, extent, name);
}
-void __prep
+static void __prep
prep_ide_release_region(ide_ioreg_t from,
unsigned int extent)
{
release_region(from, extent);
}
-void __init
+static void __init
prep_ide_init_hwif_ports (hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq)
{
ide_ioreg_t reg = data_port;
@@ -756,7 +744,7 @@
if (ctrl_port) {
hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
} else {
- hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
+ hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
}
if (irq != NULL)
*irq = 0;
@@ -765,7 +753,7 @@
#ifdef CONFIG_SMP
/* PReP (MTX) support */
-static int
+static int __init
smp_prep_probe(void)
{
extern int mot_multi;
@@ -779,7 +767,7 @@
return 1;
}
-static void
+static void __init
smp_prep_kick_cpu(int nr)
{
*(unsigned long *)KERNELBASE = nr;
@@ -787,14 +775,14 @@
printk("CPU1 reset, waiting\n");
}
-static void
+static void __init
smp_prep_setup_cpu(int cpu_nr)
{
if (OpenPIC_Addr)
do_openpic_setup_cpu();
}
-static struct smp_ops_t prep_smp_ops = {
+static struct smp_ops_t prep_smp_ops __prepdata = {
smp_openpic_message_pass,
smp_prep_probe,
smp_prep_kick_cpu,
@@ -808,7 +796,8 @@
* this will likely stay separate from the pmac.
* -- Cort
*/
-unsigned long __init prep_find_end_of_memory(void)
+static unsigned long __init
+prep_find_end_of_memory(void)
{
unsigned long total = 0;
extern unsigned int boot_mem_size;
@@ -819,15 +808,14 @@
if (total == 0 && boot_mem_size != 0)
total = boot_mem_size;
-
- if (total == 0) {
+ else if (total == 0) {
/*
* I need a way to probe the amount of memory if the residual
* data doesn't contain it. -- Cort
*/
total = 0x02000000;
printk(KERN_INFO "Ramsize from residual data was 0"
- " -- defaulting to %ldM\n", total>>20);
+ " -- defaulting to %ldM\n", total>>20);
}
return (total);
@@ -838,16 +826,17 @@
* the io areas. RAM was mapped by mapin_ram().
* -- Cort
*/
-void __init prep_map_io(void)
+static void __init
+prep_map_io(void)
{
io_block_mapping(0x80000000, PREP_ISA_IO_BASE, 0x10000000, _PAGE_IO);
io_block_mapping(0xf0000000, PREP_ISA_MEM_BASE, 0x08000000, _PAGE_IO);
}
-void __init
+static void __init
prep_init2(void)
{
-#ifdef CONFIG_NVRAM
+#ifdef CONFIG_NVRAM
request_region(PREP_NVRAM_AS0, 0x8, "nvram");
#endif
request_region(0x20,0x20,"pic1");
@@ -860,7 +849,7 @@
void __init
prep_init(unsigned long r3, unsigned long r4, unsigned long r5,
- unsigned long r6, unsigned long r7)
+ unsigned long r6, unsigned long r7)
{
#ifdef CONFIG_PREP_RESIDUAL
RESIDUAL *old_res = (RESIDUAL *)(r3 + KERNELBASE);
@@ -869,7 +858,7 @@
if ( r3 )
{
memcpy((void *)res,(void *)(r3+KERNELBASE),
- sizeof(RESIDUAL));
+ sizeof(RESIDUAL));
}
#endif
@@ -882,7 +871,7 @@
#endif /* CONFIG_BLK_DEV_INITRD */
/* Copy cmd_line parameters */
- if ( r6)
+ if ( r6 )
{
*(char *)(r7 + KERNELBASE) = 0;
strcpy(cmd_line, (char *)(r6 + KERNELBASE));
@@ -905,7 +894,7 @@
_prep_type = _PREP_Motorola;
}
else /* assume motorola if no residual (netboot?) */
-#endif
+#endif
{
_prep_type = _PREP_Motorola;
}
@@ -928,8 +917,7 @@
ppc_md.set_rtc_time = mc146818_set_rtc_time;
ppc_md.get_rtc_time = mc146818_get_rtc_time;
ppc_md.calibrate_decr = prep_calibrate_decr;
- }
- else {
+ } else {
ppc_md.set_rtc_time = mk48t59_set_rtc_time;
ppc_md.get_rtc_time = mk48t59_get_rtc_time;
ppc_md.calibrate_decr = mk48t59_calibrate_decr;
@@ -940,12 +928,12 @@
ppc_md.setup_io_mappings = prep_map_io;
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
- ppc_ide_md.default_irq = prep_ide_default_irq;
- ppc_ide_md.default_io_base = prep_ide_default_io_base;
- ppc_ide_md.ide_check_region = prep_ide_check_region;
- ppc_ide_md.ide_request_region = prep_ide_request_region;
- ppc_ide_md.ide_release_region = prep_ide_release_region;
- ppc_ide_md.ide_init_hwif = prep_ide_init_hwif_ports;
+ ppc_ide_md.default_irq = prep_ide_default_irq;
+ ppc_ide_md.default_io_base = prep_ide_default_io_base;
+ ppc_ide_md.ide_check_region = prep_ide_check_region;
+ ppc_ide_md.ide_request_region = prep_ide_request_region;
+ ppc_ide_md.ide_release_region = prep_ide_release_region;
+ ppc_ide_md.ide_init_hwif = prep_ide_init_hwif_ports;
#endif
#ifdef CONFIG_VT
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/setup.c linux/arch/ppc/kernel/setup.c
--- v2.4.13/linux/arch/ppc/kernel/setup.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.setup.c 1.57 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.setup.c 1.61 10/12/01 16:35:34 trini
*/
/*
* Common prep/pmac/chrp boot and setup code.
@@ -496,7 +496,7 @@
#ifdef CONFIG_BLK_DEV_INITRD
case BI_INITRD:
initrd_start = data[0];
- initrd_end = data[0] + rec->size;
+ initrd_end = data[0] + data[1];
break;
#endif /* CONFIG_BLK_DEV_INITRD */
#ifdef CONFIG_ALL_PPC
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/smp.c linux/arch/ppc/kernel/smp.c
--- v2.4.13/linux/arch/ppc/kernel/smp.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/kernel/smp.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.smp.c 1.31 09/08/01 15:47:42 paulus
+ * BK Id: SCCS/s.smp.c 1.34 10/11/01 12:06:01 trini
*/
/*
* Smp support for ppc.
@@ -35,7 +35,6 @@
#include
#include
#include
-#include
#include
#include "open_pic.h"
@@ -283,6 +282,7 @@
printk("Entering SMP Mode...\n");
smp_num_cpus = 1;
smp_store_cpu_info(0);
+ cpu_online_map = 1UL;
/*
* assume for now that the first cpu booted is
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/syscalls.c linux/arch/ppc/kernel/syscalls.c
--- v2.4.13/linux/arch/ppc/kernel/syscalls.c Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/syscalls.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.syscalls.c 1.8 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.syscalls.c 1.11 10/16/01 15:58:42 trini
*/
/*
* linux/arch/ppc/kernel/sys_ppc.c
@@ -306,7 +306,7 @@
* Those are normally defined in arch/ppc/kernel/pci.c. But when CONFIG_PCI is
* not defined, this file is not linked at all, so here are the "empty" versions
*/
-asmlinkage int sys_pciconfig_read() { return -ENOSYS; }
-asmlinkage int sys_pciconfig_write() { return -ENOSYS; }
-asmlinkage long sys_pciconfig_iobase() { return -ENOSYS; }
+int sys_pciconfig_read(void) { return -ENOSYS; }
+int sys_pciconfig_write(void) { return -ENOSYS; }
+long sys_pciconfig_iobase(void) { return -ENOSYS; }
#endif
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/traps.c linux/arch/ppc/kernel/traps.c
--- v2.4.13/linux/arch/ppc/kernel/traps.c Tue Oct 9 17:06:51 2001
+++ linux/arch/ppc/kernel/traps.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.traps.c 1.19 08/24/01 20:07:37 paulus
+ * BK Id: SCCS/s.traps.c 1.22 10/11/01 10:33:09 paulus
*/
/*
* linux/arch/ppc/kernel/traps.c
@@ -108,6 +108,7 @@
#ifdef CONFIG_ALL_PPC
unsigned long fixup;
#endif /* CONFIG_ALL_PPC */
+ unsigned long msr = regs->msr;
if (user_mode(regs)) {
_exception(SIGSEGV, regs);
@@ -132,31 +133,47 @@
* Check if the NIP corresponds to the address of a sync
* instruction for which there is an entry in the exception
* table.
+ * Note that the 601 only takes a machine check on TEA
+ * (transfer error ack) signal assertion, and does not
+ * set of the top 16 bits of SRR1.
+ * -- paulus.
*/
- if (regs->msr & (0x80000 | 0x40000)
+ if (((msr & 0xffff0000) == 0 || (msr & (0x80000 | 0x40000)))
&& (fixup = search_exception_table(regs->nip)) != 0) {
/*
- * Check that it's a sync instruction.
+ * Check that it's a sync instruction, or somewhere
+ * in the twi; isync; nop sequence that inb/inw/inl uses.
* As the address is in the exception table
* we should be able to read the instr there.
+ * For the debug message, we look at the preceding
+ * load or store.
*/
- if (*(unsigned int *)regs->nip == 0x7c0004ac) {
- unsigned int lsi = ((unsigned int *)regs->nip)[-1];
- int rb = (lsi >> 11) & 0x1f;
- printk(KERN_DEBUG "%s bad port %lx at %lx\n",
- (lsi & 0x100)? "OUT to": "IN from",
- regs->gpr[rb] - _IO_BASE, regs->nip);
+ unsigned int *nip = (unsigned int *)regs->nip;
+ if (*nip == 0x60000000) /* nop */
+ nip -= 2;
+ else if (*nip == 0x4c00012c) /* isync */
+ --nip;
+ if (*nip == 0x7c0004ac || (*nip >> 26) == 3) {
+ /* sync or twi */
+ unsigned int rb;
+
+ --nip;
+ rb = (*nip >> 11) & 0x1f;
+ printk(KERN_DEBUG "%s bad port %lx at %p\n",
+ (*nip & 0x100)? "OUT to": "IN from",
+ regs->gpr[rb] - _IO_BASE, nip);
regs->nip = fixup;
return;
}
}
#endif /* CONFIG_ALL_PPC */
printk("Machine check in kernel mode.\n");
- printk("Caused by (from SRR1=%lx): ", regs->msr);
- switch (regs->msr & 0xF0000) {
+ printk("Caused by (from SRR1=%lx): ", msr);
+ switch (msr & 0xF0000) {
case 0x80000:
printk("Machine check signal\n");
break;
+ case 0: /* for 601 */
case 0x40000:
printk("Transfer error ack signal\n");
break;
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/kernel/walnut_setup.c linux/arch/ppc/kernel/walnut_setup.c
--- v2.4.13/linux/arch/ppc/kernel/walnut_setup.c Mon May 21 17:04:47 2001
+++ linux/arch/ppc/kernel/walnut_setup.c Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.walnut_setup.c 1.5 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.walnut_setup.c 1.8 10/18/01 11:16:28 trini
*/
/*
*
@@ -123,12 +123,7 @@
ppc_md.kbd_unexpected_up = NULL;
ppc_md.kbd_leds = NULL;
ppc_md.kbd_init_hw = NULL;
-
-#if defined(CONFIG_MAGIC_SYSRQ)
ppc_md.ppc_kbd_sysrq_xlate = NULL;
-#endif
-
- return;
}
/*
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/lib/string.S linux/arch/ppc/lib/string.S
--- v2.4.13/linux/arch/ppc/lib/string.S Mon May 21 17:04:47 2001
+++ linux/arch/ppc/lib/string.S Fri Nov 2 17:43:54 2001
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.string.S 1.5 05/17/01 18:14:22 cort
+ * BK Id: SCCS/s.string.S 1.9 10/25/01 10:08:51 trini
*/
/*
* String handling functions for PowerPC.
@@ -14,22 +14,9 @@
#include "../kernel/ppc_asm.tmpl"
#include
#include
+#include
#include
-#if defined(CONFIG_4xx) || defined(CONFIG_8xx)
-#define CACHE_LINE_SIZE 16
-#define LG_CACHE_LINE_SIZE 4
-#define MAX_COPY_PREFETCH 1
-#elif !defined(CONFIG_PPC64BRIDGE)
-#define CACHE_LINE_SIZE 32
-#define LG_CACHE_LINE_SIZE 5
-#define MAX_COPY_PREFETCH 4
-#else
-#define CACHE_LINE_SIZE 128
-#define LG_CACHE_LINE_SIZE 7
-#define MAX_COPY_PREFETCH 1
-#endif /* CONFIG_4xx || CONFIG_8xx */
-
#define COPY_16_BYTES \
lwz r7,4(r4); \
lwz r8,8(r4); \
@@ -75,11 +62,13 @@
.long 8 ## n ## 5b,9 ## n ## 1b; \
.long 8 ## n ## 6b,9 ## n ## 1b; \
.long 8 ## n ## 7b,9 ## n ## 1b; \
-.text
+ .text
+
+ .text
-CACHELINE_BYTES = CACHE_LINE_SIZE
-LG_CACHELINE_BYTES = LG_CACHE_LINE_SIZE
-CACHELINE_MASK = (CACHE_LINE_SIZE-1)
+CACHELINE_BYTES = L1_CACHE_LINE_SIZE
+LG_CACHELINE_BYTES = LG_L1_CACHE_LINE_SIZE
+CACHELINE_MASK = (L1_CACHE_LINE_SIZE-1)
.globl strcpy
strcpy:
@@ -278,12 +267,12 @@
dcbz r11,r6
#endif
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
COPY_16_BYTES
COPY_16_BYTES
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
COPY_16_BYTES
COPY_16_BYTES
COPY_16_BYTES
@@ -456,23 +445,23 @@
#if !defined(CONFIG_8xx)
/* Here we decide how far ahead to prefetch the source */
-#if MAX_COPY_PREFETCH > 1
+#if MAX_L1_COPY_PREFETCH > 1
/* Heuristically, for large transfers we prefetch
- MAX_COPY_PREFETCH cachelines ahead. For small transfers
+ MAX_L1_COPY_PREFETCH cachelines ahead. For small transfers
we prefetch 1 cacheline ahead. */
- cmpwi r0,MAX_COPY_PREFETCH
+ cmpwi r0,MAX_L1_COPY_PREFETCH
li r7,1
li r3,4
ble 111f
- li r7,MAX_COPY_PREFETCH
+ li r7,MAX_L1_COPY_PREFETCH
111: mtctr r7
112: dcbt r3,r4
addi r3,r3,CACHELINE_BYTES
bdnz 112b
-#else /* MAX_COPY_PREFETCH == 1 */
+#else /* MAX_L1_COPY_PREFETCH == 1 */
li r3,CACHELINE_BYTES + 4
dcbt r11,r4
-#endif /* MAX_COPY_PREFETCH */
+#endif /* MAX_L1_COPY_PREFETCH */
#endif /* CONFIG_8xx */
mtctr r0
@@ -492,12 +481,12 @@
.text
/* the main body of the cacheline loop */
COPY_16_BYTES_WITHEX(0)
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
COPY_16_BYTES_WITHEX(1)
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
COPY_16_BYTES_WITHEX(2)
COPY_16_BYTES_WITHEX(3)
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
COPY_16_BYTES_WITHEX(4)
COPY_16_BYTES_WITHEX(5)
COPY_16_BYTES_WITHEX(6)
@@ -546,12 +535,12 @@
* 104f (if in read part) or 105f (if in write part), after updating r5
*/
COPY_16_BYTES_EXCODE(0)
-#if CACHE_LINE_SIZE >= 32
+#if L1_CACHE_LINE_SIZE >= 32
COPY_16_BYTES_EXCODE(1)
-#if CACHE_LINE_SIZE >= 64
+#if L1_CACHE_LINE_SIZE >= 64
COPY_16_BYTES_EXCODE(2)
COPY_16_BYTES_EXCODE(3)
-#if CACHE_LINE_SIZE >= 128
+#if L1_CACHE_LINE_SIZE >= 128
COPY_16_BYTES_EXCODE(4)
COPY_16_BYTES_EXCODE(5)
COPY_16_BYTES_EXCODE(6)
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/mm/4xx_mmu.c linux/arch/ppc/mm/4xx_mmu.c
--- v2.4.13/linux/arch/ppc/mm/4xx_mmu.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/mm/4xx_mmu.c Fri Nov 2 17:43:54 2001
@@ -69,15 +69,15 @@
* be applied to every page which is a member of a given zone. At
* present, we utilize only two of the 4xx's zones.
* The zone index bits (of ZSEL) in the PTE are used for software
- * indicators, except the LSB. For user access, zone 15 is used,
- * for kernel access, zone 14 is used. We set all but zone 15
+ * indicators, except the LSB. For user access, zone 1 is used,
+ * for kernel access, zone 0 is used. We set all but zone 1
* to zero, allowing only kernel access as indicated in the PTE.
- * For zone 15, we set a 01 binary (a value of 10 will not work)
+ * For zone 1, we set a 01 binary (a value of 10 will not work)
* to allow user access as indicated in the PTE. This also allows
* kernel access as indicated in the PTE.
*/
- mtspr(SPRN_ZPR, 0x00000001);
+ mtspr(SPRN_ZPR, 0x10000000);
flush_instruction_cache();
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/mm/cachemap.c linux/arch/ppc/mm/cachemap.c
--- v2.4.13/linux/arch/ppc/mm/cachemap.c Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/mm/cachemap.c Fri Nov 2 17:43:54 2001
@@ -50,6 +50,8 @@
#include
#include
+extern int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep);
+
void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
{
int order, rsize;
diff -u --recursive --new-file v2.4.13/linux/arch/ppc/mm/mmu_decl.h linux/arch/ppc/mm/mmu_decl.h
--- v2.4.13/linux/arch/ppc/mm/mmu_decl.h Sun Sep 23 11:40:56 2001
+++ linux/arch/ppc/mm/mmu_decl.h Fri Nov 2 17:43:54 2001
@@ -53,6 +53,7 @@
#elif defined(CONFIG_4xx)
#define flush_HPTE(X, va, pg) _tlbie(va)
+extern void MMU_init_hw(void);
#else
/* anything except 4xx or 8xx */
diff -u --recursive --new-file v2.4.13/linux/arch/sh/kernel/pci-sh7751.c linux/arch/sh/kernel/pci-sh7751.c
--- v2.4.13/linux/arch/sh/kernel/pci-sh7751.c Sun Sep 23 11:40:56 2001
+++ linux/arch/sh/kernel/pci-sh7751.c Sun Nov 4 09:31:58 2001
@@ -3,7 +3,7 @@
*
* Dustin McIntire (dustin@sensoria.com)
* Derived from arch/i386/kernel/pci-*.c which bore the message:
- * (c) 1999--2000 Martin Mares
+ * (c) 1999--2000 Martin Mares
*
* May be copied or modified under the terms of the GNU General Public
* License. See linux/COPYING for more information.
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/defconfig linux/arch/sparc/defconfig
--- v2.4.13/linux/arch/sparc/defconfig Wed Jul 25 17:10:19 2001
+++ linux/arch/sparc/defconfig Tue Oct 30 15:08:11 2001
@@ -70,7 +70,6 @@
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_E1355 is not set
CONFIG_FB_SBUS=y
CONFIG_FB_CGSIX=y
CONFIG_FB_BWTWO=y
@@ -128,6 +127,7 @@
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
@@ -153,6 +153,7 @@
CONFIG_IPV6=m
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
#
#
@@ -280,6 +281,7 @@
CONFIG_VFAT_FS=m
CONFIG_EFS_FS=m
# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
# CONFIG_RAMFS is not set
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/kernel/check_asm.sh linux/arch/sparc/kernel/check_asm.sh
--- v2.4.13/linux/arch/sparc/kernel/check_asm.sh Wed Aug 23 09:30:13 2000
+++ linux/arch/sparc/kernel/check_asm.sh Tue Oct 30 15:08:11 2001
@@ -11,7 +11,7 @@
echo " sizeof(struct $2_struct)," >> $4
;;
-ints)
- sed -n -e '/check_asm_data:/,/\.size/p' <$2 | sed -e 's/check_asm_data://' -e 's/\.size.*//' -e 's/\.long[ ]\([0-9]*\)/\1,/' >>$3
+ sed -n -e '/check_asm_data:/,/\.size/p' <$2 | sed -e 's/check_asm_data://' -e 's/\.size.*//' -e 's/\.ident.*//' -e 's/\.long[ ]\([0-9]*\)/\1,/' >>$3
;;
*)
exit 1
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/kernel/ioport.c linux/arch/sparc/kernel/ioport.c
--- v2.4.13/linux/arch/sparc/kernel/ioport.c Sun Feb 18 19:49:44 2001
+++ linux/arch/sparc/kernel/ioport.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: ioport.c,v 1.44 2001/02/13 04:07:38 davem Exp $
+/* $Id: ioport.c,v 1.45 2001/10/30 04:54:21 davem Exp $
* ioport.c: Simple io mapping allocator.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -703,7 +703,7 @@
}
}
}
-#endif CONFIG_PCI
+#endif /* CONFIG_PCI */
#ifdef CONFIG_PROC_FS
@@ -725,7 +725,7 @@
return p-buf;
}
-#endif CONFIG_PROC_FS
+#endif /* CONFIG_PROC_FS */
/*
* This is a version of find_resource and it belongs to kernel/resource.c.
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/kernel/sparc-stub.c linux/arch/sparc/kernel/sparc-stub.c
--- v2.4.13/linux/arch/sparc/kernel/sparc-stub.c Tue Oct 10 10:33:51 2000
+++ linux/arch/sparc/kernel/sparc-stub.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: sparc-stub.c,v 1.27 2000/10/03 07:28:49 anton Exp $
+/* $Id: sparc-stub.c,v 1.28 2001/10/30 04:54:21 davem Exp $
* sparc-stub.c: KGDB support for the Linux kernel.
*
* Modifications to run under Linux
@@ -330,17 +330,19 @@
* to arrange for a "return 0" upon a memory fault
*/
__asm__(
- "1: ldub [%0], %1
- inc %0
- .section .fixup,#alloc,#execinstr
- .align 4
- 2: retl
- mov 0, %%o0
- .section __ex_table, #alloc
- .align 4
- .word 1b, 2b
- .text"
- : "=r" (mem), "=r" (ch) : "0" (mem));
+ "\n1:\n\t"
+ "ldub [%0], %1\n\t"
+ "inc %0\n\t"
+ ".section .fixup,#alloc,#execinstr\n\t"
+ ".align 4\n"
+ "2:\n\t"
+ "retl\n\t"
+ " mov 0, %%o0\n\t"
+ ".section __ex_table, #alloc\n\t"
+ ".align 4\n\t"
+ ".word 1b, 2b\n\t"
+ ".text\n"
+ : "=r" (mem), "=r" (ch) : "0" (mem));
*buf++ = hexchars[ch >> 4];
*buf++ = hexchars[ch & 0xf];
}
@@ -364,17 +366,19 @@
ch |= hex(*buf++);
/* Assembler code is *mem++ = ch; with return 0 on fault */
__asm__(
- "1: stb %1, [%0]
- inc %0
- .section .fixup,#alloc,#execinstr
- .align 4
- 2: retl
- mov 0, %%o0
- .section __ex_table, #alloc
- .align 4
- .word 1b, 2b
- .text"
- : "=r" (mem) : "r" (ch) , "0" (mem));
+ "\n1:\n\t"
+ "stb %1, [%0]\n\t"
+ "inc %0\n\t"
+ ".section .fixup,#alloc,#execinstr\n\t"
+ ".align 4\n"
+ "2:\n\t"
+ "retl\n\t"
+ " mov 0, %%o0\n\t"
+ ".section __ex_table, #alloc\n\t"
+ ".align 4\n\t"
+ ".word 1b, 2b\n\t"
+ ".text\n"
+ : "=r" (mem) : "r" (ch) , "0" (mem));
}
return mem;
}
@@ -715,14 +719,12 @@
/* Again, watch those c-prefixes for ELF kernels */
#if defined(__svr4__) || defined(__ELF__)
- asm(" .globl breakinst
-
- breakinst: ta 1
- ");
+ asm(".globl breakinst\n"
+ "breakinst:\n\t"
+ "ta 1\n");
#else
- asm(" .globl _breakinst
-
- _breakinst: ta 1
- ");
+ asm(".globl _breakinst\n"
+ "_breakinst:\n\t"
+ "ta 1\n");
#endif
}
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/kernel/time.c linux/arch/sparc/kernel/time.c
--- v2.4.13/linux/arch/sparc/kernel/time.c Mon Jan 22 13:30:20 2001
+++ linux/arch/sparc/kernel/time.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.58 2001/01/11 15:07:09 davem Exp $
+/* $Id: time.c,v 1.59 2001/10/30 04:54:21 davem Exp $
* linux/arch/sparc/kernel/time.c
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -475,36 +475,39 @@
* is guarenteed to be atomic, this is why we can run this
* with interrupts on full blast. Don't touch this... -DaveM
*/
- __asm__ __volatile__("
- sethi %hi(master_l10_counter), %o1
- ld [%o1 + %lo(master_l10_counter)], %g3
- sethi %hi(xtime), %g2
-1: ldd [%g2 + %lo(xtime)], %o4
- ld [%g3], %o1
- ldd [%g2 + %lo(xtime)], %o2
- xor %o4, %o2, %o2
- xor %o5, %o3, %o3
- orcc %o2, %o3, %g0
- bne 1b
- cmp %o1, 0
- bge 1f
- srl %o1, 0xa, %o1
- sethi %hi(tick), %o3
- ld [%o3 + %lo(tick)], %o3
- sethi %hi(0x1fffff), %o2
- or %o2, %lo(0x1fffff), %o2
- add %o5, %o3, %o5
- and %o1, %o2, %o1
-1: add %o5, %o1, %o5
- sethi %hi(1000000), %o2
- or %o2, %lo(1000000), %o2
- cmp %o5, %o2
- bl,a 1f
- st %o4, [%o0 + 0x0]
- add %o4, 0x1, %o4
- sub %o5, %o2, %o5
- st %o4, [%o0 + 0x0]
-1: st %o5, [%o0 + 0x4]");
+ __asm__ __volatile__(
+ "sethi %hi(master_l10_counter), %o1\n\t"
+ "ld [%o1 + %lo(master_l10_counter)], %g3\n\t"
+ "sethi %hi(xtime), %g2\n"
+ "1:\n\t"
+ "ldd [%g2 + %lo(xtime)], %o4\n\t"
+ "ld [%g3], %o1\n\t"
+ "ldd [%g2 + %lo(xtime)], %o2\n\t"
+ "xor %o4, %o2, %o2\n\t"
+ "xor %o5, %o3, %o3\n\t"
+ "orcc %o2, %o3, %g0\n\t"
+ "bne 1b\n\t"
+ " cmp %o1, 0\n\t"
+ "bge 1f\n\t"
+ " srl %o1, 0xa, %o1\n\t"
+ "sethi %hi(tick), %o3\n\t"
+ "ld [%o3 + %lo(tick)], %o3\n\t"
+ "sethi %hi(0x1fffff), %o2\n\t"
+ "or %o2, %lo(0x1fffff), %o2\n\t"
+ "add %o5, %o3, %o5\n\t"
+ "and %o1, %o2, %o1\n"
+ "1:\n\t"
+ "add %o5, %o1, %o5\n\t"
+ "sethi %hi(1000000), %o2\n\t"
+ "or %o2, %lo(1000000), %o2\n\t"
+ "cmp %o5, %o2\n\t"
+ "bl,a 1f\n\t"
+ " st %o4, [%o0 + 0x0]\n\t"
+ "add %o4, 0x1, %o4\n\t"
+ "sub %o5, %o2, %o5\n\t"
+ "st %o4, [%o0 + 0x0]\n"
+ "1:\n\t"
+ "st %o5, [%o0 + 0x4]\n");
}
void do_settimeofday(struct timeval *tv)
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/kernel/windows.c linux/arch/sparc/kernel/windows.c
--- v2.4.13/linux/arch/sparc/kernel/windows.c Tue Aug 31 11:23:29 1999
+++ linux/arch/sparc/kernel/windows.c Tue Oct 30 15:08:11 2001
@@ -19,17 +19,17 @@
register int ctr asm("g5");
ctr = 0;
- __asm__ __volatile__("
-1:
- ld [%%g6 + %2], %%g4
- orcc %%g0, %%g4, %%g0
- add %0, 1, %0
- bne 1b
- save %%sp, -64, %%sp
-2:
- subcc %0, 1, %0
- bne 2b
- restore %%g0, %%g0, %%g0"
+ __asm__ __volatile__(
+ "\n1:\n\t"
+ "ld [%%g6 + %2], %%g4\n\t"
+ "orcc %%g0, %%g4, %%g0\n\t"
+ "add %0, 1, %0\n\t"
+ "bne 1b\n\t"
+ " save %%sp, -64, %%sp\n"
+ "2:\n\t"
+ "subcc %0, 1, %0\n\t"
+ "bne 2b\n\t"
+ " restore %%g0, %%g0, %%g0\n"
: "=&r" (ctr)
: "0" (ctr),
"i" ((const unsigned long)(&(((struct task_struct *)0)->thread.uwinmask)))
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/mm/fault.c linux/arch/sparc/mm/fault.c
--- v2.4.13/linux/arch/sparc/mm/fault.c Sun Aug 12 13:27:59 2001
+++ linux/arch/sparc/mm/fault.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: fault.c,v 1.120 2001/07/18 13:40:05 anton Exp $
+/* $Id: fault.c,v 1.121 2001/10/30 04:54:22 davem Exp $
* fault.c: Page fault handlers for the Sparc.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -177,11 +177,11 @@
memset (®s, 0, sizeof (regs));
regs.pc = pc;
regs.npc = pc + 4;
- __asm__ __volatile__ ("
- rd %%psr, %0
- nop
- nop
- nop" : "=r" (regs.psr));
+ __asm__ __volatile__ (
+ "rd %%psr, %0\n\t"
+ "nop\n\t"
+ "nop\n\t"
+ "nop\n" : "=r" (regs.psr));
unhandled_fault (address, current, ®s);
/* Not reached */
return 0;
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/mm/srmmu.c linux/arch/sparc/mm/srmmu.c
--- v2.4.13/linux/arch/sparc/mm/srmmu.c Sun Sep 23 11:40:56 2001
+++ linux/arch/sparc/mm/srmmu.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: srmmu.c,v 1.231 2001/09/20 00:35:31 davem Exp $
+/* $Id: srmmu.c,v 1.232 2001/10/30 04:54:22 davem Exp $
* srmmu.c: SRMMU specific routines for memory management.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -393,6 +393,7 @@
static pte_t *srmmu_pte_alloc_one(struct mm_struct *mm, unsigned long address)
{
BUG();
+ return NULL;
}
static void srmmu_free_pte_fast(pte_t *pte)
@@ -812,11 +813,11 @@
static void cypress_flush_tlb_mm(struct mm_struct *mm)
{
FLUSH_BEGIN(mm)
- __asm__ __volatile__("
- lda [%0] %3, %%g5
- sta %2, [%0] %3
- sta %%g0, [%1] %4
- sta %%g5, [%0] %3"
+ __asm__ __volatile__(
+ "lda [%0] %3, %%g5\n\t"
+ "sta %2, [%0] %3\n\t"
+ "sta %%g0, [%1] %4\n\t"
+ "sta %%g5, [%0] %3\n"
: /* no outputs */
: "r" (SRMMU_CTX_REG), "r" (0x300), "r" (mm->context),
"i" (ASI_M_MMUREGS), "i" (ASI_M_FLUSH_PROBE)
@@ -831,13 +832,14 @@
FLUSH_BEGIN(mm)
start &= SRMMU_PGDIR_MASK;
size = SRMMU_PGDIR_ALIGN(end) - start;
- __asm__ __volatile__("
- lda [%0] %5, %%g5
- sta %1, [%0] %5
- 1: subcc %3, %4, %3
- bne 1b
- sta %%g0, [%2 + %3] %6
- sta %%g5, [%0] %5"
+ __asm__ __volatile__(
+ "lda [%0] %5, %%g5\n\t"
+ "sta %1, [%0] %5\n"
+ "1:\n\t"
+ "subcc %3, %4, %3\n\t"
+ "bne 1b\n\t"
+ " sta %%g0, [%2 + %3] %6\n\t"
+ "sta %%g5, [%0] %5\n"
: /* no outputs */
: "r" (SRMMU_CTX_REG), "r" (mm->context), "r" (start | 0x200),
"r" (size), "r" (SRMMU_PGDIR_SIZE), "i" (ASI_M_MMUREGS),
@@ -851,11 +853,11 @@
struct mm_struct *mm = vma->vm_mm;
FLUSH_BEGIN(mm)
- __asm__ __volatile__("
- lda [%0] %3, %%g5
- sta %1, [%0] %3
- sta %%g0, [%2] %4
- sta %%g5, [%0] %3"
+ __asm__ __volatile__(
+ "lda [%0] %3, %%g5\n\t"
+ "sta %1, [%0] %3\n\t"
+ "sta %%g0, [%2] %4\n\t"
+ "sta %%g5, [%0] %3\n"
: /* no outputs */
: "r" (SRMMU_CTX_REG), "r" (mm->context), "r" (page & PAGE_MASK),
"i" (ASI_M_MMUREGS), "i" (ASI_M_FLUSH_PROBE)
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/mm/sun4c.c linux/arch/sparc/mm/sun4c.c
--- v2.4.13/linux/arch/sparc/mm/sun4c.c Wed Jul 25 17:10:19 2001
+++ linux/arch/sparc/mm/sun4c.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: sun4c.c,v 1.207 2001/07/17 16:17:33 anton Exp $
+/* $Id: sun4c.c,v 1.208 2001/10/30 04:54:22 davem Exp $
* sun4c.c: Doing in software what should be done in hardware.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -135,25 +135,26 @@
unsigned long nbytes = SUN4C_VAC_SIZE;
unsigned long lsize = sun4c_vacinfo.linesize;
- __asm__ __volatile__("
- add %2, %2, %%g1
- add %2, %%g1, %%g2
- add %2, %%g2, %%g3
- add %2, %%g3, %%g4
- add %2, %%g4, %%g5
- add %2, %%g5, %%o4
- add %2, %%o4, %%o5
-1: subcc %0, %%o5, %0
- sta %%g0, [%0] %3
- sta %%g0, [%0 + %2] %3
- sta %%g0, [%0 + %%g1] %3
- sta %%g0, [%0 + %%g2] %3
- sta %%g0, [%0 + %%g3] %3
- sta %%g0, [%0 + %%g4] %3
- sta %%g0, [%0 + %%g5] %3
- bg 1b
- sta %%g0, [%1 + %%o4] %3
-" : "=&r" (nbytes)
+ __asm__ __volatile__(
+ "add %2, %2, %%g1\n\t"
+ "add %2, %%g1, %%g2\n\t"
+ "add %2, %%g2, %%g3\n\t"
+ "add %2, %%g3, %%g4\n\t"
+ "add %2, %%g4, %%g5\n\t"
+ "add %2, %%g5, %%o4\n\t"
+ "add %2, %%o4, %%o5\n"
+ "1:\n\t"
+ "subcc %0, %%o5, %0\n\t"
+ "sta %%g0, [%0] %3\n\t"
+ "sta %%g0, [%0 + %2] %3\n\t"
+ "sta %%g0, [%0 + %%g1] %3\n\t"
+ "sta %%g0, [%0 + %%g2] %3\n\t"
+ "sta %%g0, [%0 + %%g3] %3\n\t"
+ "sta %%g0, [%0 + %%g4] %3\n\t"
+ "sta %%g0, [%0 + %%g5] %3\n\t"
+ "bg 1b\n\t"
+ " sta %%g0, [%1 + %%o4] %3\n"
+ : "=&r" (nbytes)
: "0" (nbytes), "r" (lsize), "i" (ASI_FLUSHCTX)
: "g1", "g2", "g3", "g4", "g5", "o4", "o5", "cc");
}
@@ -165,26 +166,27 @@
unsigned long nbytes = SUN4C_VAC_SIZE;
unsigned long lsize = sun4c_vacinfo.linesize;
- __asm__ __volatile__("
- add %2, %2, %%g1
- add %2, %%g1, %%g2
- add %2, %%g2, %%g3
- add %2, %%g3, %%g4
- add %2, %%g4, %%g5
- add %2, %%g5, %%o4
- add %2, %%o4, %%o5
-1: subcc %1, %%o5, %1
- sta %%g0, [%0] %6
- sta %%g0, [%0 + %2] %6
- sta %%g0, [%0 + %%g1] %6
- sta %%g0, [%0 + %%g2] %6
- sta %%g0, [%0 + %%g3] %6
- sta %%g0, [%0 + %%g4] %6
- sta %%g0, [%0 + %%g5] %6
- sta %%g0, [%0 + %%o4] %6
- bg 1b
- add %0, %%o5, %0
-" : "=&r" (addr), "=&r" (nbytes), "=&r" (lsize)
+ __asm__ __volatile__(
+ "add %2, %2, %%g1\n\t"
+ "add %2, %%g1, %%g2\n\t"
+ "add %2, %%g2, %%g3\n\t"
+ "add %2, %%g3, %%g4\n\t"
+ "add %2, %%g4, %%g5\n\t"
+ "add %2, %%g5, %%o4\n\t"
+ "add %2, %%o4, %%o5\n"
+ "1:\n\t"
+ "subcc %1, %%o5, %1\n\t"
+ "sta %%g0, [%0] %6\n\t"
+ "sta %%g0, [%0 + %2] %6\n\t"
+ "sta %%g0, [%0 + %%g1] %6\n\t"
+ "sta %%g0, [%0 + %%g2] %6\n\t"
+ "sta %%g0, [%0 + %%g3] %6\n\t"
+ "sta %%g0, [%0 + %%g4] %6\n\t"
+ "sta %%g0, [%0 + %%g5] %6\n\t"
+ "sta %%g0, [%0 + %%o4] %6\n\t"
+ "bg 1b\n\t"
+ " add %0, %%o5, %0\n"
+ : "=&r" (addr), "=&r" (nbytes), "=&r" (lsize)
: "0" (addr), "1" (nbytes), "2" (lsize),
"i" (ASI_FLUSHSEG)
: "g1", "g2", "g3", "g4", "g5", "o4", "o5", "cc");
@@ -242,26 +244,27 @@
unsigned long left = PAGE_SIZE;
unsigned long lsize = sun4c_vacinfo.linesize;
- __asm__ __volatile__("
- add %2, %2, %%g1
- add %2, %%g1, %%g2
- add %2, %%g2, %%g3
- add %2, %%g3, %%g4
- add %2, %%g4, %%g5
- add %2, %%g5, %%o4
- add %2, %%o4, %%o5
-1: subcc %1, %%o5, %1
- sta %%g0, [%0] %6
- sta %%g0, [%0 + %2] %6
- sta %%g0, [%0 + %%g1] %6
- sta %%g0, [%0 + %%g2] %6
- sta %%g0, [%0 + %%g3] %6
- sta %%g0, [%0 + %%g4] %6
- sta %%g0, [%0 + %%g5] %6
- sta %%g0, [%0 + %%o4] %6
- bg 1b
- add %0, %%o5, %0
-" : "=&r" (addr), "=&r" (left), "=&r" (lsize)
+ __asm__ __volatile__(
+ "add %2, %2, %%g1\n\t"
+ "add %2, %%g1, %%g2\n\t"
+ "add %2, %%g2, %%g3\n\t"
+ "add %2, %%g3, %%g4\n\t"
+ "add %2, %%g4, %%g5\n\t"
+ "add %2, %%g5, %%o4\n\t"
+ "add %2, %%o4, %%o5\n"
+ "1:\n\t"
+ "subcc %1, %%o5, %1\n\t"
+ "sta %%g0, [%0] %6\n\t"
+ "sta %%g0, [%0 + %2] %6\n\t"
+ "sta %%g0, [%0 + %%g1] %6\n\t"
+ "sta %%g0, [%0 + %%g2] %6\n\t"
+ "sta %%g0, [%0 + %%g3] %6\n\t"
+ "sta %%g0, [%0 + %%g4] %6\n\t"
+ "sta %%g0, [%0 + %%g5] %6\n\t"
+ "sta %%g0, [%0 + %%o4] %6\n\t"
+ "bg 1b\n\t"
+ " add %0, %%o5, %0\n"
+ : "=&r" (addr), "=&r" (left), "=&r" (lsize)
: "0" (addr), "1" (left), "2" (lsize),
"i" (ASI_FLUSHPG)
: "g1", "g2", "g3", "g4", "g5", "o4", "o5", "cc");
@@ -1402,46 +1405,46 @@
if (sun4c_vacinfo.linesize == 32) {
while (begin < end) {
- __asm__ __volatile__("
- ld [%0 + 0x00], %%g0
- ld [%0 + 0x20], %%g0
- ld [%0 + 0x40], %%g0
- ld [%0 + 0x60], %%g0
- ld [%0 + 0x80], %%g0
- ld [%0 + 0xa0], %%g0
- ld [%0 + 0xc0], %%g0
- ld [%0 + 0xe0], %%g0
- ld [%0 + 0x100], %%g0
- ld [%0 + 0x120], %%g0
- ld [%0 + 0x140], %%g0
- ld [%0 + 0x160], %%g0
- ld [%0 + 0x180], %%g0
- ld [%0 + 0x1a0], %%g0
- ld [%0 + 0x1c0], %%g0
- ld [%0 + 0x1e0], %%g0
- " : : "r" (begin));
+ __asm__ __volatile__(
+ "ld [%0 + 0x00], %%g0\n\t"
+ "ld [%0 + 0x20], %%g0\n\t"
+ "ld [%0 + 0x40], %%g0\n\t"
+ "ld [%0 + 0x60], %%g0\n\t"
+ "ld [%0 + 0x80], %%g0\n\t"
+ "ld [%0 + 0xa0], %%g0\n\t"
+ "ld [%0 + 0xc0], %%g0\n\t"
+ "ld [%0 + 0xe0], %%g0\n\t"
+ "ld [%0 + 0x100], %%g0\n\t"
+ "ld [%0 + 0x120], %%g0\n\t"
+ "ld [%0 + 0x140], %%g0\n\t"
+ "ld [%0 + 0x160], %%g0\n\t"
+ "ld [%0 + 0x180], %%g0\n\t"
+ "ld [%0 + 0x1a0], %%g0\n\t"
+ "ld [%0 + 0x1c0], %%g0\n\t"
+ "ld [%0 + 0x1e0], %%g0\n"
+ : : "r" (begin));
begin += 512;
}
} else {
while (begin < end) {
- __asm__ __volatile__("
- ld [%0 + 0x00], %%g0
- ld [%0 + 0x10], %%g0
- ld [%0 + 0x20], %%g0
- ld [%0 + 0x30], %%g0
- ld [%0 + 0x40], %%g0
- ld [%0 + 0x50], %%g0
- ld [%0 + 0x60], %%g0
- ld [%0 + 0x70], %%g0
- ld [%0 + 0x80], %%g0
- ld [%0 + 0x90], %%g0
- ld [%0 + 0xa0], %%g0
- ld [%0 + 0xb0], %%g0
- ld [%0 + 0xc0], %%g0
- ld [%0 + 0xd0], %%g0
- ld [%0 + 0xe0], %%g0
- ld [%0 + 0xf0], %%g0
- " : : "r" (begin));
+ __asm__ __volatile__(
+ "ld [%0 + 0x00], %%g0\n\t"
+ "ld [%0 + 0x10], %%g0\n\t"
+ "ld [%0 + 0x20], %%g0\n\t"
+ "ld [%0 + 0x30], %%g0\n\t"
+ "ld [%0 + 0x40], %%g0\n\t"
+ "ld [%0 + 0x50], %%g0\n\t"
+ "ld [%0 + 0x60], %%g0\n\t"
+ "ld [%0 + 0x70], %%g0\n\t"
+ "ld [%0 + 0x80], %%g0\n\t"
+ "ld [%0 + 0x90], %%g0\n\t"
+ "ld [%0 + 0xa0], %%g0\n\t"
+ "ld [%0 + 0xb0], %%g0\n\t"
+ "ld [%0 + 0xc0], %%g0\n\t"
+ "ld [%0 + 0xd0], %%g0\n\t"
+ "ld [%0 + 0xe0], %%g0\n\t"
+ "ld [%0 + 0xf0], %%g0\n"
+ : : "r" (begin));
begin += 256;
}
}
diff -u --recursive --new-file v2.4.13/linux/arch/sparc/prom/console.c linux/arch/sparc/prom/console.c
--- v2.4.13/linux/arch/sparc/prom/console.c Tue May 1 20:59:24 2001
+++ linux/arch/sparc/prom/console.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: console.c,v 1.24 2001/04/27 07:02:42 davem Exp $
+/* $Id: console.c,v 1.25 2001/10/30 04:54:22 davem Exp $
* console.c: Routines that deal with sending and receiving IO
* to/from the current console device using the PROM.
*
@@ -207,6 +207,7 @@
}
break;
default:
- }
+ ;
+ };
return PROMDEV_O_UNK;
}
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/defconfig linux/arch/sparc64/defconfig
--- v2.4.13/linux/arch/sparc64/defconfig Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/defconfig Tue Oct 30 15:08:11 2001
@@ -172,8 +172,10 @@
# Networking options
#
CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK is not set
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK=y
+CONFIG_RTNETLINK=y
+CONFIG_NETLINK_DEV=y
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
@@ -183,11 +185,13 @@
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
+CONFIG_ARPD=y
CONFIG_INET_ECN=y
# CONFIG_SYN_COOKIES is not set
CONFIG_IPV6=m
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
+CONFIG_VLAN_8021Q=m
#
#
@@ -411,6 +415,7 @@
CONFIG_BONDING=m
CONFIG_EQUALIZER=m
CONFIG_TUN=m
+# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
@@ -453,6 +458,7 @@
CONFIG_NE2K_PCI=m
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
@@ -566,7 +572,7 @@
CONFIG_EFS_FS=m
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=m
+# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=m
CONFIG_ISO9660_FS=m
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/kernel/ioctl32.c linux/arch/sparc64/kernel/ioctl32.c
--- v2.4.13/linux/arch/sparc64/kernel/ioctl32.c Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/kernel/ioctl32.c Sun Nov 4 09:31:57 2001
@@ -1,4 +1,4 @@
-/* $Id: ioctl32.c,v 1.126 2001/10/18 11:41:02 davem Exp $
+/* $Id: ioctl32.c,v 1.127 2001/11/01 23:54:19 davem Exp $
* ioctl32.c: Conversion between 32bit and 64bit native ioctls.
*
* Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com)
@@ -592,44 +592,6 @@
return err;
}
-static int mii_ioctl(unsigned long fd, unsigned int cmd, unsigned long arg)
-{
- struct ifreq ifr;
- mm_segment_t old_fs;
- int err;
- u32 data;
-
- if (copy_from_user(&ifr, (struct ifreq32 *)arg, sizeof(struct ifreq32)))
- return -EFAULT;
- ifr.ifr_data = (__kernel_caddr_t) kmalloc(sizeof(struct mii_ioctl_data),
- GFP_KERNEL);
- if (!ifr.ifr_data)
- return -EAGAIN;
-
- __get_user(data, &(((struct ifreq32 *)arg)->ifr_ifru.ifru_data));
- if (copy_from_user(ifr.ifr_data, (char *)A(data),
- sizeof(struct mii_ioctl_data))) {
- err = -EFAULT;
- goto out;
- }
-
- old_fs = get_fs();
- set_fs(KERNEL_DS);
- err = sys_ioctl(fd, cmd, (unsigned long)&ifr);
- set_fs(old_fs);
-
- if (!err) {
- if (copy_to_user((char *)A(data),
- ifr.ifr_data,
- sizeof(struct mii_ioctl_data)))
- err = -EFAULT;
- }
-
-out:
- kfree(ifr.ifr_data);
- return err;
-}
-
static inline int dev_ifsioc(unsigned int fd, unsigned int cmd, unsigned long arg)
{
struct ifreq ifr;
@@ -4102,6 +4064,9 @@
COMPATIBLE_IOCTL(SIOCDRARP)
COMPATIBLE_IOCTL(SIOCADDDLCI)
COMPATIBLE_IOCTL(SIOCDELDLCI)
+COMPATIBLE_IOCTL(SIOCGMIIPHY)
+COMPATIBLE_IOCTL(SIOCGMIIREG)
+COMPATIBLE_IOCTL(SIOCSMIIREG)
/* SG stuff */
COMPATIBLE_IOCTL(SG_SET_TIMEOUT)
COMPATIBLE_IOCTL(SG_GET_TIMEOUT)
@@ -4523,9 +4488,6 @@
HANDLE_IOCTL(SIOCGIFTXQLEN, dev_ifsioc)
HANDLE_IOCTL(SIOCSIFTXQLEN, dev_ifsioc)
HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)
-HANDLE_IOCTL(SIOCGMIIPHY, mii_ioctl)
-HANDLE_IOCTL(SIOCGMIIREG, mii_ioctl)
-HANDLE_IOCTL(SIOCSMIIREG, mii_ioctl)
HANDLE_IOCTL(SIOCADDRT, routing_ioctl)
HANDLE_IOCTL(SIOCDELRT, routing_ioctl)
/* Note SIOCRTMSG is no longer, so this is safe and * the user would have seen just an -EINVAL anyways. */
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/kernel/setup.c linux/arch/sparc64/kernel/setup.c
--- v2.4.13/linux/arch/sparc64/kernel/setup.c Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/kernel/setup.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: setup.c,v 1.69 2001/10/18 09:40:00 davem Exp $
+/* $Id: setup.c,v 1.70 2001/10/25 18:48:03 davem Exp $
* linux/arch/sparc64/kernel/setup.c
*
* Copyright (C) 1995,1996 David S. Miller (davem@caip.rutgers.edu)
@@ -195,7 +195,14 @@
pgd_t *pgdp;
pmd_t *pmdp;
pte_t *ptep;
+ int error;
+ if ((va >= LOW_OBP_ADDRESS) && (va < HI_OBP_ADDRESS)) {
+ tte = prom_virt_to_phys(va, &error);
+ if (!error)
+ res = PROM_TRUE;
+ goto done;
+ }
pgdp = pgd_offset_k(va);
if (pgd_none(*pgdp))
goto done;
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/kernel/smp.c linux/arch/sparc64/kernel/smp.c
--- v2.4.13/linux/arch/sparc64/kernel/smp.c Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/kernel/smp.c Tue Oct 30 15:08:11 2001
@@ -585,14 +585,12 @@
extern unsigned long xcall_flush_dcache_page_cheetah;
extern unsigned long xcall_flush_dcache_page_spitfire;
-static spinlock_t dcache_xcall_lock = SPIN_LOCK_UNLOCKED;
-static struct page *dcache_page;
#ifdef DCFLUSH_DEBUG
extern atomic_t dcpage_flushes;
extern atomic_t dcpage_flushes_xcall;
#endif
-static __inline__ void __smp_flush_dcache_page_client(struct page *page)
+static __inline__ void __local_flush_dcache_page(struct page *page)
{
#if (L1DCACHE_SIZE > PAGE_SIZE)
__flush_dcache_page(page->virtual,
@@ -605,37 +603,31 @@
#endif
}
-void smp_flush_dcache_page_client(void)
-{
- __smp_flush_dcache_page_client(dcache_page);
- spin_unlock(&dcache_xcall_lock);
-}
-
-void smp_flush_dcache_page_impl(struct page *page)
+void smp_flush_dcache_page_impl(struct page *page, int cpu)
{
if (smp_processors_ready) {
- int cpu = dcache_dirty_cpu(page);
unsigned long mask = 1UL << cpu;
#ifdef DCFLUSH_DEBUG
atomic_inc(&dcpage_flushes);
#endif
if (cpu == smp_processor_id()) {
- __smp_flush_dcache_page_client(page);
+ __local_flush_dcache_page(page);
} else if ((cpu_present_map & mask) != 0) {
u64 data0;
if (tlb_type == spitfire) {
- spin_lock(&dcache_xcall_lock);
- dcache_page = page;
data0 = ((u64)&xcall_flush_dcache_page_spitfire);
- spitfire_xcall_deliver(data0, 0, 0, mask);
- /* Target cpu drops dcache_xcall_lock. */
+ if (page->mapping != NULL)
+ data0 |= ((u64)1 << 32);
+ spitfire_xcall_deliver(data0,
+ __pa(page->virtual),
+ (u64) page->virtual,
+ mask);
} else {
- /* Look mom, no locks... */
data0 = ((u64)&xcall_flush_dcache_page_cheetah);
cheetah_xcall_deliver(data0,
- (u64) page->virtual,
+ __pa(page->virtual),
0, mask);
}
#ifdef DCFLUSH_DEBUG
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/kernel/sparc64_ksyms.c linux/arch/sparc64/kernel/sparc64_ksyms.c
--- v2.4.13/linux/arch/sparc64/kernel/sparc64_ksyms.c Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/kernel/sparc64_ksyms.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: sparc64_ksyms.c,v 1.113 2001/10/17 18:26:58 davem Exp $
+/* $Id: sparc64_ksyms.c,v 1.116 2001/10/26 15:49:21 davem Exp $
* arch/sparc64/kernel/sparc64_ksyms.c: Sparc64 specific ksyms support.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -126,7 +126,9 @@
/* Hard IRQ locking */
EXPORT_SYMBOL(global_irq_holder);
+#ifdef CONFIG_SMP
EXPORT_SYMBOL(synchronize_irq);
+#endif
EXPORT_SYMBOL(__global_cli);
EXPORT_SYMBOL(__global_sti);
EXPORT_SYMBOL(__global_save_flags);
@@ -136,7 +138,9 @@
EXPORT_SYMBOL(cpu_data);
/* Misc SMP information */
+#ifdef CONFIG_SMP
EXPORT_SYMBOL(smp_num_cpus);
+#endif
EXPORT_SYMBOL(__cpu_number_map);
EXPORT_SYMBOL(__cpu_logical_map);
@@ -151,7 +155,9 @@
EXPORT_SYMBOL(_do_write_unlock);
#endif
+#ifdef CONFIG_SMP
EXPORT_SYMBOL(smp_call_function);
+#endif
#endif
@@ -307,8 +313,6 @@
EXPORT_SYMBOL(sys_ioctl);
EXPORT_SYMBOL(sys32_ioctl);
EXPORT_SYMBOL(sparc32_open);
-EXPORT_SYMBOL(move_addr_to_kernel);
-EXPORT_SYMBOL(move_addr_to_user);
#endif
/* Special internal versions of library functions. */
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/kernel/sys_sparc.c linux/arch/sparc64/kernel/sys_sparc.c
--- v2.4.13/linux/arch/sparc64/kernel/sys_sparc.c Fri Apr 13 20:15:55 2001
+++ linux/arch/sparc64/kernel/sys_sparc.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: sys_sparc.c,v 1.52 2001/04/14 01:12:02 davem Exp $
+/* $Id: sys_sparc.c,v 1.54 2001/10/28 20:49:13 davem Exp $
* linux/arch/sparc64/kernel/sys_sparc.c
*
* This file contains various random system calls that
@@ -255,13 +255,27 @@
asmlinkage int sparc64_personality(unsigned long personality)
{
- int ret;
- if (current->personality == PER_LINUX32 && personality == PER_LINUX)
- personality = PER_LINUX32;
- ret = sys_personality(personality);
- if (ret == PER_LINUX32)
+ unsigned long ret, trying, orig_ret;
+
+ trying = ret = personality;
+
+ if (current->personality == PER_LINUX32 &&
+ trying == PER_LINUX)
+ trying = ret = PER_LINUX32;
+
+ /* For PER_LINUX32 we want to retain &default_exec_domain. */
+ if (trying == PER_LINUX32)
ret = PER_LINUX;
- return ret;
+
+ orig_ret = ret;
+ ret = sys_personality(ret);
+
+ if (orig_ret == PER_LINUX && trying == PER_LINUX32) {
+ current->personality = PER_LINUX32;
+ ret = PER_LINUX;
+ }
+
+ return (int) ret;
}
/* Linux version of mmap */
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/mm/init.c linux/arch/sparc64/mm/init.c
--- v2.4.13/linux/arch/sparc64/mm/init.c Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/mm/init.c Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: init.c,v 1.194 2001/10/17 18:26:58 davem Exp $
+/* $Id: init.c,v 1.199 2001/10/25 18:48:03 davem Exp $
* arch/sparc64/mm/init.c
*
* Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu)
@@ -132,21 +132,69 @@
#endif
}
+#define PG_dcache_dirty PG_arch_1
+
+#define dcache_dirty_cpu(page) \
+ (((page)->flags >> 24) & (NR_CPUS - 1UL))
+
+static __inline__ void set_dcache_dirty(struct page *page)
+{
+ unsigned long mask = smp_processor_id();
+ unsigned long non_cpu_bits = (1UL << 24UL) - 1UL;
+ mask = (mask << 24) | (1UL << PG_dcache_dirty);
+ __asm__ __volatile__("1:\n\t"
+ "ldx [%2], %%g7\n\t"
+ "and %%g7, %1, %%g5\n\t"
+ "or %%g5, %0, %%g5\n\t"
+ "casx [%2], %%g7, %%g5\n\t"
+ "cmp %%g7, %%g5\n\t"
+ "bne,pn %%xcc, 1b\n\t"
+ " nop"
+ : /* no outputs */
+ : "r" (mask), "r" (non_cpu_bits), "r" (&page->flags)
+ : "g5", "g7");
+}
+
+static __inline__ void clear_dcache_dirty_cpu(struct page *page, unsigned long cpu)
+{
+ unsigned long mask = (1UL << PG_dcache_dirty);
+
+ __asm__ __volatile__("! test_and_clear_dcache_dirty\n"
+ "1:\n\t"
+ "ldx [%2], %%g7\n\t"
+ "srlx %%g7, 24, %%g5\n\t"
+ "cmp %%g5, %0\n\t"
+ "bne,pn %%icc, 2f\n\t"
+ " andn %%g7, %1, %%g5\n\t"
+ "casx [%2], %%g7, %%g5\n\t"
+ "cmp %%g7, %%g5\n\t"
+ "bne,pn %%xcc, 1b\n\t"
+ " nop\n"
+ "2:"
+ : /* no outputs */
+ : "r" (cpu), "r" (mask), "r" (&page->flags)
+ : "g5", "g7");
+}
+
void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
{
struct page *page = pte_page(pte);
+ unsigned long pg_flags;
+
+ if (VALID_PAGE(page) &&
+ page->mapping &&
+ ((pg_flags = page->flags) & (1UL << PG_dcache_dirty))) {
+ int cpu = (pg_flags >> 24);
- if (VALID_PAGE(page) && page->mapping &&
- test_bit(PG_dcache_dirty, &page->flags)) {
/* This is just to optimize away some function calls
* in the SMP case.
*/
- if (dcache_dirty_cpu(page) == smp_processor_id())
+ if (cpu == smp_processor_id())
flush_dcache_page_impl(page);
else
- smp_flush_dcache_page_impl(page);
+ smp_flush_dcache_page_impl(page, cpu);
- clear_dcache_dirty(page);
+ clear_dcache_dirty_cpu(page, cpu);
}
__update_mmu_cache(vma, address, pte);
}
@@ -162,7 +210,7 @@
if (dirty) {
if (dirty_cpu == smp_processor_id())
return;
- smp_flush_dcache_page_impl(page);
+ smp_flush_dcache_page_impl(page, dirty_cpu);
}
set_dcache_dirty(page);
} else {
@@ -244,12 +292,44 @@
prom_halt();
}
+#define BASE_PAGE_SIZE 8192
+static pmd_t *prompmd;
+
+/*
+ * Translate PROM's mapping we capture at boot time into physical address.
+ * The second parameter is only set from prom_callback() invocations.
+ */
+unsigned long prom_virt_to_phys(unsigned long promva, int *error)
+{
+ pmd_t *pmdp = prompmd + ((promva >> 23) & 0x7ff);
+ pte_t *ptep;
+ unsigned long base;
+
+ if (pmd_none(*pmdp)) {
+ if (error)
+ *error = 1;
+ return(0);
+ }
+ ptep = (pte_t *)pmd_page(*pmdp) + ((promva >> 13) & 0x3ff);
+ if (!pte_present(*ptep)) {
+ if (error)
+ *error = 1;
+ return(0);
+ }
+ if (error) {
+ *error = 0;
+ return(pte_val(*ptep));
+ }
+ base = pte_val(*ptep) & _PAGE_PADDR;
+ return(base + (promva & (BASE_PAGE_SIZE - 1)));
+}
+
static void inherit_prom_mappings(void)
{
struct linux_prom_translation *trans;
unsigned long phys_page, tte_vaddr, tte_data;
void (*remap_func)(unsigned long, unsigned long, int);
- pmd_t *pmdp, *pmd;
+ pmd_t *pmdp;
pte_t *ptep;
int node, n, i, tsz;
extern unsigned int obp_iaddr_patch[2], obp_daddr_patch[2];
@@ -283,21 +363,21 @@
* in inherit_locked_prom_mappings()).
*/
#define OBP_PMD_SIZE 2048
-#define BASE_PAGE_SIZE 8192
- pmd = __alloc_bootmem(OBP_PMD_SIZE, OBP_PMD_SIZE, 0UL);
- if (pmd == NULL)
+ prompmd = __alloc_bootmem(OBP_PMD_SIZE, OBP_PMD_SIZE, 0UL);
+ if (prompmd == NULL)
early_pgtable_allocfail("pmd");
- memset(pmd, 0, OBP_PMD_SIZE);
+ memset(prompmd, 0, OBP_PMD_SIZE);
for (i = 0; i < n; i++) {
unsigned long vaddr;
- if (trans[i].virt >= 0xf0000000 && trans[i].virt < 0x100000000) {
+ if (trans[i].virt >= LOW_OBP_ADDRESS && trans[i].virt < HI_OBP_ADDRESS) {
for (vaddr = trans[i].virt;
- vaddr < trans[i].virt + trans[i].size;
+ ((vaddr < trans[i].virt + trans[i].size) &&
+ (vaddr < HI_OBP_ADDRESS));
vaddr += BASE_PAGE_SIZE) {
unsigned long val;
- pmdp = pmd + ((vaddr >> 23) & 0x7ff);
+ pmdp = prompmd + ((vaddr >> 23) & 0x7ff);
if (pmd_none(*pmdp)) {
ptep = __alloc_bootmem(BASE_PAGE_SIZE,
BASE_PAGE_SIZE,
@@ -321,7 +401,7 @@
}
}
}
- phys_page = __pa(pmd);
+ phys_page = __pa(prompmd);
obp_iaddr_patch[0] |= (phys_page >> 10);
obp_iaddr_patch[1] |= (phys_page & 0x3ff);
flushi((long)&obp_iaddr_patch[0]);
diff -u --recursive --new-file v2.4.13/linux/arch/sparc64/mm/ultra.S linux/arch/sparc64/mm/ultra.S
--- v2.4.13/linux/arch/sparc64/mm/ultra.S Tue Oct 23 22:48:50 2001
+++ linux/arch/sparc64/mm/ultra.S Tue Oct 30 15:08:11 2001
@@ -1,4 +1,4 @@
-/* $Id: ultra.S,v 1.63 2001/10/17 19:30:21 davem Exp $
+/* $Id: ultra.S,v 1.67 2001/10/23 14:28:20 davem Exp $
* ultra.S: Don't expand these all over the place...
*
* Copyright (C) 1997, 2000 David S. Miller (davem@redhat.com)
@@ -505,7 +505,7 @@
.align 32
.globl xcall_flush_dcache_page_cheetah
-xcall_flush_dcache_page_cheetah:
+xcall_flush_dcache_page_cheetah: /* %g1 == physical page address */
sethi %hi(PAGE_SIZE), %g3
1: subcc %g3, (1 << 5), %g3
stxa %g0, [%g1 + %g3] ASI_DCACHE_INVALIDATE
@@ -516,18 +516,39 @@
nop
.globl xcall_flush_dcache_page_spitfire
-xcall_flush_dcache_page_spitfire:
- rdpr %pstate, %g2
- wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate
- rdpr %pil, %g2
- wrpr %g0, 15, %pil
- sethi %hi(109f), %g7
- b,pt %xcc, etrap_irq
-109: or %g7, %lo(109b), %g7
- call smp_flush_dcache_page_client
+xcall_flush_dcache_page_spitfire: /* %g1 == physical page address
+ %g7 == kernel page virtual address
+ %g5 == (page->mapping != NULL) */
+#if (L1DCACHE_SIZE > PAGE_SIZE)
+ srlx %g1, (13 - 2), %g1 ! Form tag comparitor
+ sethi %hi(L1DCACHE_SIZE), %g3 ! D$ size == 16K
+ sub %g3, (1 << 5), %g3 ! D$ linesize == 32
+1: ldxa [%g3] ASI_DCACHE_TAG, %g2
+ andcc %g2, 0x3, %g0
+ be,pn %xcc, 2f
+ andn %g2, 0x3, %g2
+ cmp %g2, %g1
+
+ bne,pt %xcc, 2f
nop
- b,pt %xcc, rtrap
- clr %l6
+ stxa %g0, [%g3] ASI_DCACHE_TAG
+ membar #Sync
+2: cmp %g3, 0
+ bne,pt %xcc, 1b
+ sub %g3, (1 << 5), %g3
+
+ brz,pn %g5, 2f
+#endif /* L1DCACHE_SIZE > PAGE_SIZE */
+ sethi %hi(PAGE_SIZE), %g3
+
+1: flush %g7
+ subcc %g3, (1 << 5), %g3
+ bne,pt %icc, 1b
+ add %g7, (1 << 5), %g7
+
+2: retry
+ nop
+ nop
.globl xcall_capture
xcall_capture:
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/block/mfmhd.c linux/drivers/acorn/block/mfmhd.c
--- v2.4.13/linux/drivers/acorn/block/mfmhd.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acorn/block/mfmhd.c Thu Oct 25 13:58:35 2001
@@ -1208,11 +1208,6 @@
return -EFAULT;
return 0;
- case BLKGETSIZE:
- return put_user (mfm[minor].nr_sects, (unsigned long *)arg);
- case BLKGETSIZE64:
- return put_user ((u64)mfm[minor].nr_sects << 9, (u64 *)arg);
-
case BLKFRASET:
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
@@ -1230,6 +1225,8 @@
return -EACCES;
return mfm_reread_partitions(dev);
+ case BLKGETSIZE:
+ case BLKGETSIZE64:
case BLKFLSBUF:
case BLKROSET:
case BLKROGET:
@@ -1250,7 +1247,6 @@
if (dev >= mfm_drives)
return -ENODEV;
- MOD_INC_USE_COUNT;
while (mfm_info[dev].busy)
sleep_on (&mfm_wait_open);
@@ -1265,7 +1261,6 @@
static int mfm_release(struct inode *inode, struct file *file)
{
mfm_info[DEVICE_NR(MINOR(inode->i_rdev))].access_count--;
- MOD_DEC_USE_COUNT;
return 0;
}
@@ -1324,6 +1319,7 @@
static struct block_device_operations mfm_fops =
{
+ owner: THIS_MODULE,
open: mfm_open,
release: mfm_release,
ioctl: mfm_ioctl,
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/char/keyb_ps2.c linux/drivers/acorn/char/keyb_ps2.c
--- v2.4.13/linux/drivers/acorn/char/keyb_ps2.c Tue Jul 3 17:08:19 2001
+++ linux/drivers/acorn/char/keyb_ps2.c Thu Oct 25 13:53:46 2001
@@ -30,6 +30,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -212,7 +213,7 @@
};
#ifdef CONFIG_MAGIC_SYSRQ
-unsigned char ps2kbd_sysrq_xlate[] =
+static unsigned char ps2kbd_sysrq_xlate[] =
{
27, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -360,7 +361,7 @@
status = 0;
}
-void ps2kbd_leds(unsigned int leds)
+static void ps2kbd_leds(unsigned char leds)
{
ps2kbd_sendbyte(KBD_SETLEDS);
ps2kbd_sendbyte(leds);
@@ -380,6 +381,17 @@
{
}
+static int ps2kbd_translate(unsigned char scancode, unsigned char *keycode, char rawmode)
+{
+ *keycode = scancode;
+ return 1;
+}
+
+static char ps2kbd_unexpected_up(unsigned char scancode)
+{
+ return 0200;
+}
+
int __init ps2kbd_init_hw(void)
{
/* Reset the keyboard state machine. */
@@ -391,6 +403,14 @@
panic("Could not allocate keyboard receive IRQ!");
if (request_irq (IRQ_KEYBOARDTX, ps2kbd_tx, 0, "keyboard", NULL) != 0)
panic("Could not allocate keyboard transmit IRQ!");
+
+ k_translate = ps2kbd_translate;
+ k_unexpected_up = ps2kbd_unexpected_up;
+ k_leds = ps2kbd_leds;
+#ifdef CONFIG_MAGIC_SYSRQ
+ k_sysrq_xlate = ps2kbd_sysrq_xlate;
+ k_sysrq_key = 13;
+#endif
return 0;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/scsi/cumana_2.c linux/drivers/acorn/scsi/cumana_2.c
--- v2.4.13/linux/drivers/acorn/scsi/cumana_2.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acorn/scsi/cumana_2.c Sun Nov 4 09:31:57 2001
@@ -195,6 +195,7 @@
memcpy(info->sg + 1, SCp->buffer + 1,
sizeof(struct scatterlist) * bufs);
info->sg[0].address = SCp->ptr;
+ info->sg[0].page = NULL;
info->sg[0].length = SCp->this_residual;
if (direction == DMA_OUT)
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/scsi/ecoscsi.c linux/drivers/acorn/scsi/ecoscsi.c
--- v2.4.13/linux/drivers/acorn/scsi/ecoscsi.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acorn/scsi/ecoscsi.c Thu Oct 25 13:53:46 2001
@@ -232,7 +232,6 @@
#endif
#undef STAT
-#ifndef HOSTS_C
#define NCR5380_implementation_fields \
int port, ctrl
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/scsi/eesox.c linux/drivers/acorn/scsi/eesox.c
--- v2.4.13/linux/drivers/acorn/scsi/eesox.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acorn/scsi/eesox.c Sun Nov 4 09:31:57 2001
@@ -199,7 +199,8 @@
memcpy(info->sg + 1, SCp->buffer + 1,
sizeof(struct scatterlist) * bufs);
info->sg[0].address = SCp->ptr;
- info->sg[0].length = SCp->this_residual;
+ info->sg[0].page = NULL;
+ info->sg[0].length = SCp->this_residual;
if (direction == DMA_OUT)
pci_dir = PCI_DMA_TODEVICE,
diff -u --recursive --new-file v2.4.13/linux/drivers/acorn/scsi/powertec.c linux/drivers/acorn/scsi/powertec.c
--- v2.4.13/linux/drivers/acorn/scsi/powertec.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acorn/scsi/powertec.c Sun Nov 4 09:31:57 2001
@@ -187,7 +187,8 @@
memcpy(info->sg + 1, SCp->buffer + 1,
sizeof(struct scatterlist) * bufs);
info->sg[0].address = SCp->ptr;
- info->sg[0].length = SCp->this_residual;
+ info->sg[0].page = NULL;
+ info->sg[0].length = SCp->this_residual;
if (direction == DMA_OUT)
pci_dir = PCI_DMA_TODEVICE,
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/Makefile linux/drivers/acpi/Makefile
--- v2.4.13/linux/drivers/acpi/Makefile Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/Makefile Wed Oct 24 14:06:21 2001
@@ -36,12 +36,11 @@
subdir-$(CONFIG_ACPI) += $(acpi-subdirs)
subdir-$(CONFIG_ACPI_BUSMGR) += ospm
-obj-$(CONFIG_ACPI) += os.o acpi_ksyms.o
+obj-$(CONFIG_ACPI) += driver.o os.o acpi_ksyms.o
obj-$(CONFIG_ACPI) += $(foreach dir,$(acpi-subdirs),$(dir)/$(dir).o)
ifdef CONFIG_ACPI_KERNEL_CONFIG
obj-$(CONFIG_ACPI) += acpiconf.o osconf.o
endif
-obj-$(CONFIG_ACPI) += driver.o
ifeq ($(CONFIG_ACPI_BUSMGR),y)
obj-y += ospm/ospm.o
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/acpi_ksyms.c linux/drivers/acpi/acpi_ksyms.c
--- v2.4.13/linux/drivers/acpi/acpi_ksyms.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/acpi_ksyms.c Wed Oct 24 14:06:21 2001
@@ -38,6 +38,14 @@
EXPORT_SYMBOL(acpi_db_user_commands);
#endif
+#ifdef ACPI_DEBUG
+EXPORT_SYMBOL(acpi_ut_debug_print_raw);
+EXPORT_SYMBOL(acpi_ut_debug_print);
+EXPORT_SYMBOL(acpi_ut_status_exit);
+EXPORT_SYMBOL(acpi_ut_exit);
+EXPORT_SYMBOL(acpi_ut_trace);
+#endif
+
EXPORT_SYMBOL(acpi_gbl_FADT);
EXPORT_SYMBOL(acpi_os_free);
@@ -103,6 +111,5 @@
EXPORT_SYMBOL(acpi_hw_register_read);
EXPORT_SYMBOL(acpi_set_firmware_waking_vector);
EXPORT_SYMBOL(acpi_subsystem_status);
-
EXPORT_SYMBOL(acpi_os_signal);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbcmds.c linux/drivers/acpi/debugger/dbcmds.c
--- v2.4.13/linux/drivers/acpi/debugger/dbcmds.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbcmds.c Wed Oct 24 14:06:21 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbcmds - debug commands and output routines
- * $Revision: 65 $
+ * $Revision: 66 $
*
******************************************************************************/
@@ -422,7 +422,7 @@
/* Display the subtree */
acpi_db_set_output_destination (DB_REDIRECTABLE_OUTPUT);
- acpi_ns_dump_objects (ACPI_TYPE_ANY, max_depth, ACPI_UINT32_MAX, subtree_entry);
+ acpi_ns_dump_objects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, max_depth, ACPI_UINT32_MAX, subtree_entry);
acpi_db_set_output_destination (DB_CONSOLE_OUTPUT);
}
@@ -466,7 +466,7 @@
/* Display the subtree */
acpi_db_set_output_destination (DB_REDIRECTABLE_OUTPUT);
- acpi_ns_dump_objects (ACPI_TYPE_ANY, max_depth, owner_id, subtree_entry);
+ acpi_ns_dump_objects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, max_depth, owner_id, subtree_entry);
acpi_db_set_output_destination (DB_CONSOLE_OUTPUT);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbdisasm.c linux/drivers/acpi/debugger/dbdisasm.c
--- v2.4.13/linux/drivers/acpi/debugger/dbdisasm.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbdisasm.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbdisasm - parser op tree display routines
- * $Revision: 48 $
+ * $Revision: 50 $
*
******************************************************************************/
@@ -97,6 +97,7 @@
acpi_status
acpi_ps_display_object_pathname (
+ acpi_walk_state *walk_state,
acpi_parse_object *op)
{
acpi_parse_object *target_op;
@@ -130,26 +131,43 @@
acpi_status
acpi_ps_display_object_pathname (
+ acpi_walk_state *walk_state,
acpi_parse_object *op)
{
acpi_status status;
acpi_namespace_node *node;
NATIVE_CHAR buffer[MAX_SHOW_ENTRY];
u32 buffer_size = MAX_SHOW_ENTRY;
+ u32 debug_level;
- acpi_os_printf (" (Path ");
+ /* Save current debug level so we don't get extraneous debug output */
+
+ debug_level = acpi_dbg_level;
+ acpi_dbg_level = 0;
/* Just get the Node out of the Op object */
node = op->node;
if (!node) {
- /*
- * No Named obj, so we can't get the pathname since the object
- * is not in the namespace. This can happen during single
- * stepping where a dynamic named object is *about* to be created.
- */
- return (AE_OK);
+ /* Node not defined in this scope, look it up */
+
+ status = acpi_ns_lookup (walk_state->scope_info, op->value.string, ACPI_TYPE_ANY,
+ IMODE_EXECUTE, NS_SEARCH_PARENT, walk_state, &(node));
+
+ if (ACPI_FAILURE (status)) {
+ /*
+ * We can't get the pathname since the object
+ * is not in the namespace. This can happen during single
+ * stepping where a dynamic named object is *about* to be created.
+ */
+ acpi_os_printf (" [Path not found]");
+ goto exit;
+ }
+
+ /* Save it for next time. */
+
+ op->node = node;
}
/* Convert Named_desc/handle to a full pathname */
@@ -157,11 +175,17 @@
status = acpi_ns_handle_to_pathname (node, &buffer_size, buffer);
if (ACPI_FAILURE (status)) {
acpi_os_printf ("****Could not get pathname****)");
- return (status);
+ goto exit;
}
- acpi_os_printf ("%s)", buffer);
- return (AE_OK);
+ acpi_os_printf (" (Path %s)", buffer);
+
+
+exit:
+ /* Restore the debug level */
+
+ acpi_dbg_level = debug_level;
+ return (status);
}
#endif
@@ -275,7 +299,7 @@
if ((op->opcode == AML_INT_NAMEPATH_OP && op->value.name) &&
(op->parent) &&
(acpi_gbl_db_opt_verbose)) {
- acpi_ps_display_object_pathname (op);
+ acpi_ps_display_object_pathname (walk_state, op);
}
acpi_os_printf ("\n");
@@ -561,7 +585,7 @@
case AML_QWORD_OP:
if (acpi_gbl_db_opt_verbose) {
- acpi_os_printf ("(UINT64) 0x%8.8X%8.8X", op->value.integer64.hi,
+ acpi_os_printf ("(u64) 0x%8.8X%8.8X", op->value.integer64.hi,
op->value.integer64.lo);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbdisply.c linux/drivers/acpi/debugger/dbdisply.c
--- v2.4.13/linux/drivers/acpi/debugger/dbdisply.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbdisply.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbdisply - debug display commands
- * $Revision: 52 $
+ * $Revision: 57 $
*
******************************************************************************/
@@ -246,7 +246,7 @@
}
else {
- acpi_os_printf ("Object Pathname: %s\n", ret_buf.pointer);
+ acpi_os_printf ("Object (%p) Pathname: %s\n", node, ret_buf.pointer);
}
if (!acpi_os_readable (node, sizeof (acpi_namespace_node))) {
@@ -264,7 +264,7 @@
return;
}
- acpi_ut_dump_buffer (node->object, sizeof (acpi_operand_object), display, ACPI_UINT32_MAX);
+ acpi_ut_dump_buffer ((void *) node->object, sizeof (acpi_operand_object), display, ACPI_UINT32_MAX);
acpi_ex_dump_object_descriptor (node->object, 1);
}
}
@@ -402,7 +402,7 @@
break;
case AML_REVISION_OP:
- acpi_os_printf ("[Const] Revision (%X)", ACPI_CA_VERSION);
+ acpi_os_printf ("[Const] Revision (%X)", ACPI_CA_SUPPORT_LEVEL);
break;
case AML_LOCAL_OP:
@@ -520,28 +520,22 @@
num_remaining_ops++;
}
- op_info = acpi_ps_get_opcode_info (op->opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
- /* Bad opcode or ASCII character */
-
- continue;
- }
-
-
/* Decode the opcode */
- switch (ACPI_GET_OP_CLASS (op_info)) {
- case OPTYPE_CONSTANT: /* argument type only */
- case OPTYPE_LITERAL: /* argument type only */
- case OPTYPE_DATA_TERM: /* argument type only */
- case OPTYPE_LOCAL_VARIABLE: /* argument type only */
- case OPTYPE_METHOD_ARGUMENT: /* argument type only */
+ op_info = acpi_ps_get_opcode_info (op->opcode);
+ switch (op_info->class) {
+ case AML_CLASS_ARGUMENT:
if (count_remaining) {
num_remaining_operands++;
}
num_operands++;
break;
+
+ case AML_CLASS_UNKNOWN:
+ /* Bad opcode or ASCII character */
+
+ continue;
default:
if (count_remaining) {
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbfileio.c linux/drivers/acpi/debugger/dbfileio.c
--- v2.4.13/linux/drivers/acpi/debugger/dbfileio.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbfileio.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: dbfileio - Debugger file I/O commands. These can't usually
* be used when running the debugger in Ring 0 (Kernel mode)
- * $Revision: 48 $
+ * $Revision: 53 $
*
******************************************************************************/
@@ -38,16 +38,18 @@
MODULE_NAME ("dbfileio")
+/*
+ * NOTE: this is here for lack of a better place. It is used in all
+ * flavors of the debugger, need LCD file
+ */
#ifdef ACPI_APPLICATION
#include
FILE *acpi_gbl_debug_file = NULL;
#endif
-/*
- * NOTE: this is here for lack of a better place. It is used in all
- * flavors of the debugger, need LCD file
- */
+acpi_table_header *acpi_gbl_db_table_ptr = NULL;
+
/*******************************************************************************
*
@@ -172,7 +174,7 @@
u32 *table_length)
{
acpi_table_header table_header;
- u8 *aml_ptr;
+ u8 *aml_start;
u32 aml_length;
u32 actual;
acpi_status status;
@@ -209,7 +211,7 @@
/* Allocate a buffer for the table */
*table_length = table_header.length;
- *table_ptr = ACPI_MEM_ALLOCATE ((size_t) *table_length);
+ *table_ptr = acpi_os_allocate ((size_t) *table_length);
if (!*table_ptr) {
acpi_os_printf ("Could not allocate memory for ACPI table %4.4s (size=%X)\n",
table_header.signature, table_header.length);
@@ -217,8 +219,8 @@
}
- aml_ptr = (u8 *) *table_ptr + sizeof (table_header);
- aml_length = *table_length - sizeof (table_header);
+ aml_start = (u8 *) *table_ptr + sizeof (table_header);
+ aml_length = *table_length - sizeof (table_header);
/* Copy the header to the buffer */
@@ -226,19 +228,19 @@
/* Get the rest of the table */
- actual = fread (aml_ptr, 1, (size_t) aml_length, fp);
+ actual = fread (aml_start, 1, (size_t) aml_length, fp);
if (actual == aml_length) {
return (AE_OK);
}
if (actual > 0) {
acpi_os_printf ("Warning - reading table, asked for %X got %X\n", aml_length, actual);
- return (AE_OK);
+ return (AE_OK);
}
acpi_os_printf ("Error - could not read the table file\n");
- ACPI_MEM_FREE (*table_ptr);
+ acpi_os_free (*table_ptr);
*table_ptr = NULL;
*table_length = 0;
@@ -325,7 +327,6 @@
#ifdef ACPI_APPLICATION
FILE *fp;
acpi_status status;
- acpi_table_header *table_ptr;
u32 table_length;
@@ -341,7 +342,7 @@
/* Get the entire file */
acpi_os_printf ("Loading Acpi table from file %s\n", filename);
- status = acpi_db_load_table (fp, &table_ptr, &table_length);
+ status = acpi_db_load_table (fp, &acpi_gbl_db_table_ptr, &table_length);
fclose(fp);
if (ACPI_FAILURE (status)) {
@@ -349,27 +350,25 @@
return (status);
}
-
/* Attempt to recognize and install the table */
- status = ae_local_load_table (table_ptr);
+ status = ae_local_load_table (acpi_gbl_db_table_ptr);
if (ACPI_FAILURE (status)) {
if (status == AE_EXIST) {
acpi_os_printf ("Table %4.4s is already installed\n",
- &table_ptr->signature);
+ &acpi_gbl_db_table_ptr->signature);
}
-
else {
acpi_os_printf ("Could not install table, %s\n",
acpi_format_exception (status));
}
- ACPI_MEM_FREE (table_ptr);
+ acpi_os_free (acpi_gbl_db_table_ptr);
return (status);
}
acpi_os_printf ("%4.4s at %p successfully installed and loaded\n",
- &table_ptr->signature, table_ptr);
+ &acpi_gbl_db_table_ptr->signature, acpi_gbl_db_table_ptr);
acpi_gbl_acpi_hardware_present = FALSE;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbinput.c linux/drivers/acpi/debugger/dbinput.c
--- v2.4.13/linux/drivers/acpi/debugger/dbinput.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbinput.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbinput - user front-end to the AML debugger
- * $Revision: 68 $
+ * $Revision: 72 $
*
******************************************************************************/
@@ -47,11 +47,10 @@
NATIVE_CHAR acpi_gbl_db_scope_buf[40];
NATIVE_CHAR acpi_gbl_db_debug_filename[40];
NATIVE_CHAR *acpi_gbl_db_args[DB_MAX_ARGS];
-NATIVE_CHAR *acpi_gbl_db_buffer;
+NATIVE_CHAR *acpi_gbl_db_buffer = NULL;
NATIVE_CHAR *acpi_gbl_db_filename = NULL;
u8 acpi_gbl_db_output_to_file = FALSE;
-
u32 acpi_gbl_db_debug_level = ACPI_LV_VERBOSITY2;
u32 acpi_gbl_db_console_debug_level = NORMAL_DEFAULT | ACPI_LV_TABLES;
u8 acpi_gbl_db_output_flags = DB_CONSOLE_OUTPUT;
@@ -525,7 +524,7 @@
case CMD_ALLOCATIONS:
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
- acpi_ut_dump_current_allocations ((u32) -1, NULL);
+ acpi_ut_dump_allocations ((u32) -1, NULL);
#endif
break;
@@ -917,7 +916,6 @@
* because all the semaphores are deleted during termination
*/
acpi_terminate ();
-
return (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbstats.c linux/drivers/acpi/debugger/dbstats.c
--- v2.4.13/linux/drivers/acpi/debugger/dbstats.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbstats.c Wed Oct 24 14:06:22 2001
@@ -368,11 +368,11 @@
if (acpi_gbl_memory_lists[i].object_size)
{
- size = ROUND_UP_TO_1_k (outstanding * acpi_gbl_memory_lists[i].object_size);
+ size = ROUND_UP_TO_1K (outstanding * acpi_gbl_memory_lists[i].object_size);
}
else
{
- size = ROUND_UP_TO_1_k (acpi_gbl_memory_lists[i].current_total_size);
+ size = ROUND_UP_TO_1K (acpi_gbl_memory_lists[i].current_total_size);
}
acpi_os_printf (" Mem: [Alloc Free Outstanding Size] % 7d % 7d % 7d % 7d Kb\n",
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbutils.c linux/drivers/acpi/debugger/dbutils.c
--- v2.4.13/linux/drivers/acpi/debugger/dbutils.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbutils - AML debugger utilities
- * $Revision: 43 $
+ * $Revision: 45 $
*
******************************************************************************/
@@ -135,7 +135,7 @@
case ACPI_TYPE_INTEGER:
- acpi_os_printf ("[Integer] = %X%8.8X\n", HIDWORD (obj_desc->integer.value),
+ acpi_os_printf ("[Integer] = %8.8X%8.8X\n", HIDWORD (obj_desc->integer.value),
LODWORD (obj_desc->integer.value));
break;
@@ -265,15 +265,37 @@
acpi_parse_object *start_op;
acpi_status status = AE_OK;
u32 base_aml_offset;
+ acpi_walk_state *walk_state;
+
+
+ FUNCTION_ENTRY ();
acpi_os_printf ("Pass two parse ....\n");
+
while (op) {
if (op->opcode == AML_METHOD_OP) {
method = (acpi_parse2_object *) op;
- status = acpi_ps_parse_aml (op, method->data, method->length, 0,
- NULL, NULL, NULL, acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return (AE_NO_MEMORY);
+ }
+
+
+ walk_state->parser_state.aml =
+ walk_state->parser_state.aml_start = method->data;
+ walk_state->parser_state.aml_end =
+ walk_state->parser_state.pkg_end = method->data + method->length;
+ walk_state->parser_state.start_scope = op;
+
+ walk_state->descending_callback = acpi_ds_load1_begin_op;
+ walk_state->ascending_callback = acpi_ds_load1_end_op;
+
+
+ status = acpi_ps_parse_aml (walk_state);
base_aml_offset = (method->value.arg)->aml_offset + 1;
@@ -297,7 +319,7 @@
}
if (ACPI_FAILURE (status)) {
- return (status);
+ break;
}
op = acpi_ps_get_depth_next (root, op);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/debugger/dbxface.c linux/drivers/acpi/debugger/dbxface.c
--- v2.4.13/linux/drivers/acpi/debugger/dbxface.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/debugger/dbxface.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbxface - AML Debugger external interfaces
- * $Revision: 41 $
+ * $Revision: 45 $
*
******************************************************************************/
@@ -46,7 +46,7 @@
*
* PARAMETERS: Walk_state - Current walk
* Op - Current executing op
- * Op_type - Type of the current AML Opcode
+ * Opcode_class - Class of the current AML Opcode
*
* RETURN: Status
*
@@ -58,7 +58,7 @@
acpi_db_single_step (
acpi_walk_state *walk_state,
acpi_parse_object *op,
- u8 op_type)
+ u32 opcode_class)
{
acpi_parse_object *next;
acpi_status status = AE_OK;
@@ -91,22 +91,11 @@
return (AE_OK);
}
- switch (op_type) {
- case OPTYPE_UNDEFINED:
- case OPTYPE_CONSTANT: /* argument type only */
- case OPTYPE_LITERAL: /* argument type only */
- case OPTYPE_DATA_TERM: /* argument type only */
- case OPTYPE_LOCAL_VARIABLE: /* argument type only */
- case OPTYPE_METHOD_ARGUMENT: /* argument type only */
+ switch (opcode_class) {
+ case AML_CLASS_UNKNOWN:
+ case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */
return (AE_OK);
break;
-
- case OPTYPE_NAMED_OBJECT:
- switch (op->opcode) {
- case AML_INT_NAMEPATH_OP:
- return (AE_OK);
- break;
- }
}
/*
@@ -270,7 +259,7 @@
/* Init globals */
- acpi_gbl_db_buffer = acpi_os_allocate (ACPI_DEBUG_BUFFER_SIZE);
+ acpi_gbl_db_buffer = acpi_os_callocate (ACPI_DEBUG_BUFFER_SIZE);
/* Initial scope is the root */
@@ -301,6 +290,31 @@
}
return (0);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_db_terminate
+ *
+ * PARAMETERS: None
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Stop debugger
+ *
+ ******************************************************************************/
+
+void
+acpi_db_terminate (void)
+{
+
+ if (acpi_gbl_db_table_ptr) {
+ acpi_os_free (acpi_gbl_db_table_ptr);
+ }
+ if (acpi_gbl_db_buffer) {
+ acpi_os_free (acpi_gbl_db_buffer);
+ }
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dsfield.c linux/drivers/acpi/dispatcher/dsfield.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dsfield.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dsfield.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsfield - Dispatcher field routines
- * $Revision: 44 $
+ * $Revision: 46 $
*
*****************************************************************************/
@@ -29,78 +29,178 @@
#include "acdispat.h"
#include "acinterp.h"
#include "acnamesp.h"
+#include "acparser.h"
#define _COMPONENT ACPI_DISPATCHER
MODULE_NAME ("dsfield")
-/*
- * Field flags: Bits 00 - 03 : Access_type (Any_acc, Byte_acc, etc.)
- * 04 : Lock_rule (1 == Lock)
- * 05 - 06 : Update_rule
- */
-
-#define FIELD_ACCESS_TYPE_MASK 0x0F
-#define FIELD_LOCK_RULE_MASK 0x10
-#define FIELD_UPDATE_RULE_MASK 0x60
-
-
/*******************************************************************************
*
- * FUNCTION: Acpi_ds_create_field
+ * FUNCTION: Acpi_ds_create_buffer_field
*
- * PARAMETERS: Op - Op containing the Field definition and args
- * Region_node - Object for the containing Operation Region
- * ` Walk_state - Current method state
+ * PARAMETERS: Opcode - The opcode to be executed
+ * Operands - List of operands for the opcode
+ * Walk_state - Current state
*
* RETURN: Status
*
- * DESCRIPTION: Create a new field in the specified operation region
+ * DESCRIPTION: Execute the Create_field operators:
+ * Create_bit_field_op,
+ * Create_byte_field_op,
+ * Create_word_field_op,
+ * Create_dWord_field_op,
+ * Create_qWord_field_op,
+ * Create_field_op (all of which define fields in buffers)
*
******************************************************************************/
acpi_status
-acpi_ds_create_field (
+acpi_ds_create_buffer_field (
acpi_parse_object *op,
- acpi_namespace_node *region_node,
acpi_walk_state *walk_state)
{
- acpi_status status = AE_AML_ERROR;
acpi_parse_object *arg;
acpi_namespace_node *node;
- u8 field_flags;
- u32 field_bit_position = 0;
+ acpi_status status;
+ acpi_operand_object *obj_desc;
- FUNCTION_TRACE_PTR ("Ds_create_field", op);
+ FUNCTION_TRACE ("Ds_create_buffer_field");
- /* First arg is the name of the parent Op_region */
+ /* Get the Name_string argument */
- arg = op->value.arg;
- if (!region_node) {
- status = acpi_ns_lookup (walk_state->scope_info, arg->value.name,
- ACPI_TYPE_REGION, IMODE_EXECUTE,
- NS_SEARCH_PARENT, walk_state, ®ion_node);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
+ if (op->opcode == AML_CREATE_FIELD_OP) {
+ arg = acpi_ps_get_arg (op, 3);
}
+ else {
+ /* Create Bit/Byte/Word/Dword field */
- /* Second arg is the field flags */
+ arg = acpi_ps_get_arg (op, 2);
+ }
- arg = arg->next;
- field_flags = (u8) arg->value.integer;
+ if (!arg) {
+ return_ACPI_STATUS (AE_AML_NO_OPERAND);
+ }
- /* Each remaining arg is a Named Field */
+ /*
+ * Enter the Name_string into the namespace
+ */
+ status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
+ INTERNAL_TYPE_DEF_ANY, IMODE_LOAD_PASS1,
+ NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
+ walk_state, &(node));
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+
+ /* We could put the returned object (Node) on the object stack for later, but
+ * for now, we will put it in the "op" object that the parser uses, so we
+ * can get it again at the end of this scope
+ */
+ op->node = node;
+
+ /*
+ * If there is no object attached to the node, this node was just created and
+ * we need to create the field object. Otherwise, this was a lookup of an
+ * existing node and we don't want to create the field object again.
+ */
+ if (node->object) {
+ return_ACPI_STATUS (AE_OK);
+ }
+
+ /*
+ * The Field definition is not fully parsed at this time.
+ * (We must save the address of the AML for the buffer and index operands)
+ */
+
+ /* Create the buffer field object */
+
+ obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER_FIELD);
+ if (!obj_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /*
+ * Allocate a method object for this field unit
+ */
+ obj_desc->buffer_field.extra = acpi_ut_create_internal_object (
+ INTERNAL_TYPE_EXTRA);
+ if (!obj_desc->buffer_field.extra) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /*
+ * Remember location in AML stream of the field unit
+ * opcode and operands -- since the buffer and index
+ * operands must be evaluated.
+ */
+ obj_desc->buffer_field.extra->extra.aml_start = ((acpi_parse2_object *) op)->data;
+ obj_desc->buffer_field.extra->extra.aml_length = ((acpi_parse2_object *) op)->length;
+ obj_desc->buffer_field.node = node;
+
+ /* Attach constructed field descriptor to parent node */
+
+ status = acpi_ns_attach_object (node, obj_desc, ACPI_TYPE_BUFFER_FIELD);
+
+
+cleanup:
+
+ /* Remove local reference to the object */
+
+ acpi_ut_remove_reference (obj_desc);
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ds_get_field_names
+ *
+ * PARAMETERS: Info - Create_field info structure
+ * ` Walk_state - Current method state
+ * Arg - First parser arg for the field name list
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Process all named fields in a field declaration. Names are
+ * entered into the namespace.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ds_get_field_names (
+ ACPI_CREATE_FIELD_INFO *info,
+ acpi_walk_state *walk_state,
+ acpi_parse_object *arg)
+{
+ acpi_status status;
+
+
+ FUNCTION_TRACE_U32 ("Ds_get_field_names", info);
+
+
+ /* First field starts at bit zero */
+
+ info->field_bit_position = 0;
+
+ /* Process all elements in the field list (of parse nodes) */
- arg = arg->next;
while (arg) {
+ /*
+ * Three types of field elements are handled:
+ * 1) Offset - specifies a bit offset
+ * 2) Access_as - changes the access mode
+ * 3) Name - Enters a new named field into the namespace
+ */
switch (arg->opcode) {
case AML_INT_RESERVEDFIELD_OP:
- field_bit_position += arg->value.size;
+ info->field_bit_position += arg->value.size;
break;
@@ -110,48 +210,57 @@
* Get a new Access_type and Access_attribute for all
* entries (until end or another Access_as keyword)
*/
- field_flags = (u8) ((field_flags & FIELD_ACCESS_TYPE_MASK) ||
- ((u8) (arg->value.integer >> 8)));
+ info->field_flags = (u8) ((info->field_flags & FIELD_ACCESS_TYPE_MASK) ||
+ ((u8) (arg->value.integer >> 8)));
break;
case AML_INT_NAMEDFIELD_OP:
+ /* Enter a new field name into the namespace */
+
status = acpi_ns_lookup (walk_state->scope_info,
(NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
- INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1,
+ info->field_type, IMODE_LOAD_PASS1,
NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, &node);
+ NULL, &info->field_node);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
- /*
- * Initialize an object for the new Node that is on
- * the object stack
- */
- status = acpi_ex_prep_region_field_value (node, region_node, field_flags,
- field_bit_position, arg->value.size);
+ /* Create and initialize an object for the new Field Node */
+
+ info->field_bit_length = arg->value.size;
+
+ status = acpi_ex_prep_field_value (info);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
- /* Keep track of bit position for *next* field */
+ /* Keep track of bit position for the next field */
+
+ info->field_bit_position += info->field_bit_length;
+ break;
+
+
+ default:
- field_bit_position += arg->value.size;
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid opcode in field list: %X\n",
+ arg->opcode));
+ return_ACPI_STATUS (AE_AML_ERROR);
break;
}
arg = arg->next;
}
- return_ACPI_STATUS (status);
+ return_ACPI_STATUS (AE_OK);
}
/*******************************************************************************
*
- * FUNCTION: Acpi_ds_create_bank_field
+ * FUNCTION: Acpi_ds_create_field
*
* PARAMETERS: Op - Op containing the Field definition and args
* Region_node - Object for the containing Operation Region
@@ -159,29 +268,25 @@
*
* RETURN: Status
*
- * DESCRIPTION: Create a new bank field in the specified operation region
+ * DESCRIPTION: Create a new field in the specified operation region
*
******************************************************************************/
acpi_status
-acpi_ds_create_bank_field (
+acpi_ds_create_field (
acpi_parse_object *op,
acpi_namespace_node *region_node,
acpi_walk_state *walk_state)
{
acpi_status status = AE_AML_ERROR;
acpi_parse_object *arg;
- acpi_namespace_node *register_node;
- acpi_namespace_node *node;
- u32 bank_value;
- u8 field_flags;
- u32 field_bit_position = 0;
+ ACPI_CREATE_FIELD_INFO info;
- FUNCTION_TRACE_PTR ("Ds_create_bank_field", op);
+ FUNCTION_TRACE_PTR ("Ds_create_field", op);
- /* First arg is the name of the parent Op_region */
+ /* First arg is the name of the parent Op_region (must already exist) */
arg = op->value.arg;
if (!region_node) {
@@ -193,82 +298,88 @@
}
}
- /* Second arg is the Bank Register */
+ /* Second arg is the field flags */
arg = arg->next;
+ info.field_flags = arg->value.integer8;
- status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
- INTERNAL_TYPE_BANK_FIELD_DEFN, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, ®ister_node);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
+ /* Each remaining arg is a Named Field */
- /* Third arg is the Bank_value */
+ info.field_type = INTERNAL_TYPE_REGION_FIELD;
+ info.region_node = region_node;
- arg = arg->next;
- bank_value = arg->value.integer32;
+ status = acpi_ds_get_field_names (&info, walk_state, arg->next);
+ return_ACPI_STATUS (status);
+}
- /* Next arg is the field flags */
- arg = arg->next;
- field_flags = arg->value.integer8;
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ds_create_bank_field
+ *
+ * PARAMETERS: Op - Op containing the Field definition and args
+ * Region_node - Object for the containing Operation Region
+ * ` Walk_state - Current method state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Create a new bank field in the specified operation region
+ *
+ ******************************************************************************/
- /* Each remaining arg is a Named Field */
+acpi_status
+acpi_ds_create_bank_field (
+ acpi_parse_object *op,
+ acpi_namespace_node *region_node,
+ acpi_walk_state *walk_state)
+{
+ acpi_status status = AE_AML_ERROR;
+ acpi_parse_object *arg;
+ ACPI_CREATE_FIELD_INFO info;
- arg = arg->next;
- while (arg) {
- switch (arg->opcode) {
- case AML_INT_RESERVEDFIELD_OP:
- field_bit_position += arg->value.size;
- break;
+ FUNCTION_TRACE_PTR ("Ds_create_bank_field", op);
- case AML_INT_ACCESSFIELD_OP:
+ /* First arg is the name of the parent Op_region (must already exist) */
- /*
- * Get a new Access_type and Access_attribute for
- * all entries (until end or another Access_as keyword)
- */
- field_flags = (u8) ((field_flags & FIELD_ACCESS_TYPE_MASK) ||
- ((u8) (arg->value.integer >> 8)));
- break;
+ arg = op->value.arg;
+ if (!region_node) {
+ status = acpi_ns_lookup (walk_state->scope_info, arg->value.name,
+ ACPI_TYPE_REGION, IMODE_EXECUTE,
+ NS_SEARCH_PARENT, walk_state, ®ion_node);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+ }
+ /* Second arg is the Bank Register (must already exist) */
- case AML_INT_NAMEDFIELD_OP:
+ arg = arg->next;
+ status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
+ INTERNAL_TYPE_BANK_FIELD_DEFN, IMODE_EXECUTE,
+ NS_SEARCH_PARENT, walk_state, &info.register_node);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
- status = acpi_ns_lookup (walk_state->scope_info,
- (NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
- INTERNAL_TYPE_REGION_FIELD, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, &node);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
+ /* Third arg is the Bank_value */
- /*
- * Initialize an object for the new Node that is on
- * the object stack
- */
- status = acpi_ex_prep_bank_field_value (node, region_node, register_node,
- bank_value, field_flags, field_bit_position,
- arg->value.size);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
+ arg = arg->next;
+ info.bank_value = arg->value.integer32;
- /* Keep track of bit position for the *next* field */
+ /* Fourth arg is the field flags */
- field_bit_position += arg->value.size;
- break;
+ arg = arg->next;
+ info.field_flags = arg->value.integer8;
- }
+ /* Each remaining arg is a Named Field */
- arg = arg->next;
- }
+ info.field_type = INTERNAL_TYPE_BANK_FIELD;
+ info.region_node = region_node;
+
+ status = acpi_ds_get_field_names (&info, walk_state, arg->next);
return_ACPI_STATUS (status);
}
@@ -296,107 +407,44 @@
{
acpi_status status;
acpi_parse_object *arg;
- acpi_namespace_node *node;
- acpi_namespace_node *index_register_node;
- acpi_namespace_node *data_register_node;
- u8 field_flags;
- u32 field_bit_position = 0;
+ ACPI_CREATE_FIELD_INFO info;
FUNCTION_TRACE_PTR ("Ds_create_index_field", op);
- arg = op->value.arg;
-
- /* First arg is the name of the Index register */
+ /* First arg is the name of the Index register (must already exist) */
+ arg = op->value.arg;
status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
- ACPI_TYPE_ANY, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, &index_register_node);
+ ACPI_TYPE_ANY, IMODE_EXECUTE,
+ NS_SEARCH_PARENT, walk_state, &info.register_node);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
- /* Second arg is the data register */
+ /* Second arg is the data register (must already exist) */
arg = arg->next;
-
status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
- INTERNAL_TYPE_INDEX_FIELD_DEFN, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, &data_register_node);
+ INTERNAL_TYPE_INDEX_FIELD_DEFN, IMODE_EXECUTE,
+ NS_SEARCH_PARENT, walk_state, &info.data_register_node);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
-
/* Next arg is the field flags */
arg = arg->next;
- field_flags = (u8) arg->value.integer;
+ info.field_flags = arg->value.integer8;
/* Each remaining arg is a Named Field */
- arg = arg->next;
- while (arg) {
- switch (arg->opcode) {
- case AML_INT_RESERVEDFIELD_OP:
-
- field_bit_position += arg->value.size;
- break;
-
-
- case AML_INT_ACCESSFIELD_OP:
-
- /*
- * Get a new Access_type and Access_attribute for all
- * entries (until end or another Access_as keyword)
- */
- field_flags = (u8) ((field_flags & FIELD_ACCESS_TYPE_MASK) ||
- ((u8) (arg->value.integer >> 8)));
- break;
-
+ info.field_type = INTERNAL_TYPE_INDEX_FIELD;
+ info.region_node = region_node;
- case AML_INT_NAMEDFIELD_OP:
-
- status = acpi_ns_lookup (walk_state->scope_info,
- (NATIVE_CHAR *) &((acpi_parse2_object *)arg)->name,
- INTERNAL_TYPE_INDEX_FIELD, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- NULL, &node);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
- /*
- * Initialize an object for the new Node that is on
- * the object stack
- */
- status = acpi_ex_prep_index_field_value (node, index_register_node,
- data_register_node, field_flags,
- field_bit_position, arg->value.size);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
- /* Keep track of bit position for the *next* field */
-
- field_bit_position += arg->value.size;
- break;
-
-
- default:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid opcode in field list: %X\n",
- arg->opcode));
- status = AE_AML_ERROR;
- break;
- }
-
- arg = arg->next;
- }
+ status = acpi_ds_get_field_names (&info, walk_state, arg->next);
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dsmethod.c linux/drivers/acpi/dispatcher/dsmethod.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dsmethod.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dsmethod.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsmethod - Parser/Interpreter interface - control method parsing
- * $Revision: 65 $
+ * $Revision: 69 $
*
*****************************************************************************/
@@ -65,6 +65,7 @@
acpi_parse_object *op;
acpi_namespace_node *node;
acpi_owner_id owner_id;
+ acpi_walk_state *walk_state;
FUNCTION_TRACE_PTR ("Ds_parse_method", obj_handle);
@@ -77,7 +78,7 @@
}
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Parsing [%4.4s] **** Named_obj=%p\n",
- &((acpi_namespace_node *)obj_handle)->name, obj_handle));
+ (char*)&((acpi_namespace_node *)obj_handle)->name, obj_handle));
/* Extract the method object from the method Node */
@@ -88,7 +89,7 @@
return_ACPI_STATUS (AE_NULL_OBJECT);
}
- /* Create a mutex for the method if there is a concurrency limit */
+ /* Create a mutex for the method if there is a concurrency limit */
if ((obj_desc->method.concurrency != INFINITE_CONCURRENCY) &&
(!obj_desc->method.semaphore)) {
@@ -114,6 +115,20 @@
acpi_ps_set_name (op, node->name);
op->node = node;
+ /* Create and initialize a new walk state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ status = acpi_ds_init_aml_walk (walk_state, op, node, obj_desc->method.aml_start,
+ obj_desc->method.aml_length, NULL, NULL, 1);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
/*
* Parse the method, first pass
@@ -125,12 +140,7 @@
* method so that operands to the named objects can
* take on dynamic run-time values.
*/
- status = acpi_ps_parse_aml (op, obj_desc->method.pcode,
- obj_desc->method.pcode_length,
- ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
- node, NULL, NULL,
- acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
-
+ status = acpi_ps_parse_aml (walk_state);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
@@ -141,10 +151,7 @@
obj_desc->method.owning_id = owner_id;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** [%4.4s] Parsed **** Named_obj=%p Op=%p\n",
- &((acpi_namespace_node *)obj_handle)->name, obj_handle, op));
-
- /* Install the parsed tree in the method object */
- /* TBD: [Restructure] Obsolete field? */
+ (char*)&((acpi_namespace_node *)obj_handle)->name, obj_handle, op));
acpi_ps_delete_parse_tree (op);
@@ -242,13 +249,12 @@
acpi_ds_call_control_method (
acpi_walk_list *walk_list,
acpi_walk_state *this_walk_state,
- acpi_parse_object *op)
+ acpi_parse_object *op) /* TBD: This operand is obsolete */
{
acpi_status status;
acpi_namespace_node *method_node;
acpi_operand_object *obj_desc;
acpi_walk_state *next_walk_state;
- acpi_parse_state *parser_state;
u32 i;
@@ -270,7 +276,6 @@
return_ACPI_STATUS (AE_NULL_OBJECT);
}
-
/* Init for new method, wait on concurrency semaphore */
status = acpi_ds_begin_method_execution (method_node, obj_desc,
@@ -279,78 +284,62 @@
return_ACPI_STATUS (status);
}
- /* Create and initialize a new parser state */
-
- parser_state = acpi_ps_create_state (obj_desc->method.pcode,
- obj_desc->method.pcode_length);
- if (!parser_state) {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- acpi_ps_init_scope (parser_state, NULL);
- parser_state->start_node = method_node;
-
- /* Create a new state for the preempting walk */
+ /* 1) Parse: Create a new walk state for the preempting walk */
next_walk_state = acpi_ds_create_walk_state (obj_desc->method.owning_id,
- NULL, obj_desc, walk_list);
+ op, obj_desc, NULL);
if (!next_walk_state) {
- /* TBD: delete parser state */
-
return_ACPI_STATUS (AE_NO_MEMORY);
+ goto cleanup;
}
- next_walk_state->walk_type = WALK_METHOD;
- next_walk_state->method_node = method_node;
- next_walk_state->parser_state = parser_state;
- next_walk_state->parse_flags = this_walk_state->parse_flags;
- next_walk_state->descending_callback = this_walk_state->descending_callback;
- next_walk_state->ascending_callback = this_walk_state->ascending_callback;
-
- /* The Next_op of the Next_walk will be the beginning of the method */
- /* TBD: [Restructure] -- obsolete? */
-
- next_walk_state->next_op = NULL;
+ /* Create and init a Root Node */
- /* Open a new scope */
+ op = acpi_ps_alloc_op (AML_SCOPE_OP);
+ if (!op) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
- status = acpi_ds_scope_stack_push (method_node,
- ACPI_TYPE_METHOD, next_walk_state);
+ status = acpi_ds_init_aml_walk (next_walk_state, op, method_node,
+ obj_desc->method.aml_start, obj_desc->method.aml_length,
+ NULL, NULL, 1);
if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
goto cleanup;
}
+ /* Begin AML parse */
+
+ status = acpi_ps_parse_aml (next_walk_state);
+ acpi_ps_delete_parse_tree (op);
+
+
+ /* 2) Execute: Create a new state for the preempting walk */
+
+ next_walk_state = acpi_ds_create_walk_state (obj_desc->method.owning_id,
+ NULL, obj_desc, walk_list);
+ if (!next_walk_state) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
/*
- * Initialize the arguments for the method. The resolved
- * arguments were put on the previous walk state's operand
+ * The resolved arguments were put on the previous walk state's operand
* stack. Operands on the previous walk state stack always
* start at index 0.
+ * Null terminate the list of arguments
*/
- status = acpi_ds_method_data_init_args (&this_walk_state->operands[0],
- this_walk_state->num_operands,
- next_walk_state);
+ this_walk_state->operands [this_walk_state->num_operands] = NULL;
+
+ status = acpi_ds_init_aml_walk (next_walk_state, NULL, method_node,
+ obj_desc->method.aml_start, obj_desc->method.aml_length,
+ &this_walk_state->operands[0], NULL, 3);
if (ACPI_FAILURE (status)) {
goto cleanup;
}
-
- /* Create and init a Root Node */
-
- op = acpi_ps_alloc_op (AML_SCOPE_OP);
- if (!op) {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- status = acpi_ps_parse_aml (op, obj_desc->method.pcode,
- obj_desc->method.pcode_length,
- ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
- method_node, NULL, NULL,
- acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
- acpi_ps_delete_parse_tree (op);
-
-
/*
* Delete the operands on the previous walkstate operand stack
* (they were copied to new objects)
@@ -363,7 +352,6 @@
/* Clear the operand stack */
this_walk_state->num_operands = 0;
-
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Starting nested execution, newstate=%p\n",
next_walk_state));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dsobject.c linux/drivers/acpi/dispatcher/dsobject.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dsobject.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dsobject.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsobject - Dispatcher object management routines
- * $Revision: 75 $
+ * $Revision: 81 $
*
*****************************************************************************/
@@ -64,7 +64,7 @@
{
acpi_object_type8 type;
acpi_status status;
- ACPI_INIT_WALK_INFO *info = (ACPI_INIT_WALK_INFO *) context;
+ acpi_init_walk_info *info = (acpi_init_walk_info *) context;
u8 table_revision;
@@ -118,15 +118,14 @@
* Always parse methods to detect errors, we may delete
* the parse tree below
*/
-
status = acpi_ds_parse_method (obj_handle);
-
- /* TBD: [Errors] what do we do with an error? */
-
if (ACPI_FAILURE (status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] parse failed! %s\n",
- obj_handle, &((acpi_namespace_node *)obj_handle)->name,
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Method %p [%4.4s] - parse failure, %s\n",
+ obj_handle, (char*)&((acpi_namespace_node *)obj_handle)->name,
acpi_format_exception (status)));
+
+ /* This parse failed, but we will continue parsing more methods */
+
break;
}
@@ -168,7 +167,7 @@
acpi_namespace_node *start_node)
{
acpi_status status;
- ACPI_INIT_WALK_INFO info;
+ acpi_init_walk_info info;
FUNCTION_TRACE ("Ds_initialize_objects");
@@ -241,7 +240,7 @@
obj_desc = *ret_obj_desc;
op_info = acpi_ps_get_opcode_info (opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
/* Unknown opcode */
return (AE_TYPE);
@@ -308,7 +307,7 @@
byte_list = (acpi_parse2_object *) arg->next;
if (byte_list) {
if (byte_list->opcode != AML_INT_BYTELIST_OP) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Expecting bytelist, got: %x\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Expecting bytelist, got: %p\n",
byte_list));
return (AE_TYPE);
}
@@ -356,8 +355,8 @@
case INTERNAL_TYPE_REFERENCE:
- switch (ACPI_GET_OP_CLASS (op_info)) {
- case OPTYPE_LOCAL_VARIABLE:
+ switch (op_info->type) {
+ case AML_TYPE_LOCAL_VARIABLE:
/* Split the opcode into a base opcode + offset */
@@ -366,7 +365,7 @@
break;
- case OPTYPE_METHOD_ARGUMENT:
+ case AML_TYPE_METHOD_ARGUMENT:
/* Split the opcode into a base opcode + offset */
@@ -655,6 +654,15 @@
FUNCTION_TRACE_PTR ("Ds_create_node", op);
+ /*
+ * Because of the execution pass through the non-control-method
+ * parts of the table, we can arrive here twice. Only init
+ * the named object node the first time through
+ */
+ if (node->object) {
+ return_ACPI_STATUS (AE_OK);
+ }
+
if (!op->value.arg) {
/* No arguments, there is nothing to do */
@@ -675,14 +683,8 @@
/* Init obj */
status = acpi_ns_attach_object (node, obj_desc, (u8) node->type);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- return_ACPI_STATUS (status);
-
-cleanup:
+ /* Remove local reference to the object */
acpi_ut_remove_reference (obj_desc);
return_ACPI_STATUS (status);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dsopcode.c linux/drivers/acpi/dispatcher/dsopcode.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dsopcode.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dsopcode.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes
- * $Revision: 52 $
+ * $Revision: 56 $
*
*****************************************************************************/
@@ -61,6 +61,7 @@
acpi_parse_object *field_op;
acpi_status status;
acpi_table_desc *table_desc;
+ acpi_walk_state *walk_state;
FUNCTION_TRACE_PTR ("Ds_get_buffer_field_arguments", obj_desc);
@@ -78,7 +79,7 @@
DEBUG_EXEC(acpi_ut_display_init_pathname (node, " [Field]"));
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] Buffer_field JIT Init\n",
- &node->name));
+ (char*)&node->name));
/*
@@ -101,17 +102,34 @@
return_ACPI_STATUS (status);
}
+ /* Create and initialize a new parser state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ status = acpi_ds_init_aml_walk (walk_state, op, NULL, extra_desc->extra.aml_start,
+ extra_desc->extra.aml_length, NULL, NULL, 1);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+
+ /* TBD: No Walk flags?? */
+
+ walk_state->parse_flags = 0;
+
/* Pass1: Parse the entire Buffer_field declaration */
- status = acpi_ps_parse_aml (op, extra_desc->extra.pcode,
- extra_desc->extra.pcode_length, 0,
- NULL, NULL, NULL, acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
+ status = acpi_ps_parse_aml (walk_state);
if (ACPI_FAILURE (status)) {
acpi_ps_delete_parse_tree (op);
return_ACPI_STATUS (status);
}
- /* Get and init the actual Fiel_unit_op created above */
+ /* Get and init the actual Field_unit Op created above */
field_op = op->value.arg;
op->node = node;
@@ -121,7 +139,7 @@
field_op->node = node;
acpi_ps_delete_parse_tree (op);
- /* Acpi_evaluate the address and length arguments for the Op_region */
+ /* Evaluate the address and length arguments for the Op_region */
op = acpi_ps_alloc_op (AML_SCOPE_OP);
if (!op) {
@@ -130,15 +148,23 @@
op->node = acpi_ns_get_parent_object (node);
- status = acpi_ps_parse_aml (op, extra_desc->extra.pcode,
- extra_desc->extra.pcode_length,
- ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
- NULL /*Method_desc*/, NULL, NULL,
- acpi_ds_exec_begin_op, acpi_ds_exec_end_op);
- /* All done with the parse tree, delete it */
+ /* Create and initialize a new parser state */
- acpi_ps_delete_parse_tree (op);
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+ status = acpi_ds_init_aml_walk (walk_state, op, NULL, extra_desc->extra.aml_start,
+ extra_desc->extra.aml_length, NULL, NULL, 3);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+
+ status = acpi_ps_parse_aml (walk_state);
+ acpi_ps_delete_parse_tree (op);
/*
* The pseudo-method object is no longer needed since the region is
@@ -174,6 +200,7 @@
acpi_parse_object *region_op;
acpi_status status;
acpi_table_desc *table_desc;
+ acpi_walk_state *walk_state;
FUNCTION_TRACE_PTR ("Ds_get_region_arguments", obj_desc);
@@ -191,9 +218,8 @@
DEBUG_EXEC(acpi_ut_display_init_pathname (node, " [Operation Region]"));
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] Op_region Init at AML %p[%x]\n",
- &node->name, extra_desc->extra.pcode,
- *(u32*) extra_desc->extra.pcode));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] Op_region Init at AML %p\n",
+ (char*)&node->name, extra_desc->extra.aml_start));
/*
* Allocate a new parser op to be the root of the parsed
@@ -215,11 +241,28 @@
return_ACPI_STATUS (status);
}
+ /* Create and initialize a new parser state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ op, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ status = acpi_ds_init_aml_walk (walk_state, op, NULL, extra_desc->extra.aml_start,
+ extra_desc->extra.aml_length, NULL, NULL, 1);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+
+ /* TBD: No Walk flags?? */
+
+ walk_state->parse_flags = 0;
+
/* Parse the entire Op_region declaration, creating a parse tree */
- status = acpi_ps_parse_aml (op, extra_desc->extra.pcode,
- extra_desc->extra.pcode_length, 0,
- NULL, NULL, NULL, acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
+ status = acpi_ps_parse_aml (walk_state);
if (ACPI_FAILURE (status)) {
acpi_ps_delete_parse_tree (op);
return_ACPI_STATUS (status);
@@ -244,14 +287,22 @@
op->node = acpi_ns_get_parent_object (node);
- status = acpi_ps_parse_aml (op, extra_desc->extra.pcode,
- extra_desc->extra.pcode_length,
- ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
- NULL /*Method_desc*/, NULL, NULL,
- acpi_ds_exec_begin_op, acpi_ds_exec_end_op);
+ /* Create and initialize a new parser state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ op, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
- /* All done with the parse tree, delete it */
+ status = acpi_ds_init_aml_walk (walk_state, op, NULL, extra_desc->extra.aml_start,
+ extra_desc->extra.aml_length, NULL, NULL, 3);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+ status = acpi_ps_parse_aml (walk_state);
acpi_ps_delete_parse_tree (op);
return_ACPI_STATUS (status);
@@ -668,7 +719,7 @@
acpi_ut_remove_reference (operand_desc);
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Rgn_obj %p Addr %8.8lX%8.8lX Len %X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Rgn_obj %p Addr %8.8X%8.8X Len %X\n",
obj_desc, HIDWORD(obj_desc->region.address), LODWORD(obj_desc->region.address),
obj_desc->region.length));
@@ -731,7 +782,7 @@
* of a loop
*/
walk_state->control_state->control.aml_predicate_start =
- walk_state->parser_state->aml - 1;
+ walk_state->parser_state.aml - 1;
/* TBD: can this be removed? */
/*Acpi_ps_pkg_length_encoding_size (GET8 (Walk_state->Parser_state->Aml));*/
break;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dsutils.c linux/drivers/acpi/dispatcher/dsutils.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dsutils.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dsutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dsutils - Dispatcher utilities
- * $Revision: 72 $
+ * $Revision: 80 $
*
******************************************************************************/
@@ -85,8 +85,8 @@
*/
parent_info = acpi_ps_get_opcode_info (op->parent->opcode);
- if (ACPI_GET_OP_TYPE (parent_info) != ACPI_OP_TYPE_OPCODE) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown parent opcode. Op=%X\n", op));
+ if (parent_info->class == AML_CLASS_UNKNOWN) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown parent opcode. Op=%p\n", op));
return_VALUE (FALSE);
}
@@ -97,11 +97,11 @@
* Otherwise leave it as is, it will be deleted when it is used
* as an operand later.
*/
- switch (ACPI_GET_OP_CLASS (parent_info)) {
+ switch (parent_info->class) {
/*
* In these cases, the parent will never use the return object
*/
- case OPTYPE_CONTROL: /* IF, ELSE, WHILE only */
+ case AML_CLASS_CONTROL: /* IF, ELSE, WHILE only */
switch (op->parent->opcode) {
case AML_RETURN_OP:
@@ -109,7 +109,7 @@
/* Never delete the return value associated with a return opcode */
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Result used, [RETURN] opcode=%X Op=%X\n", op->opcode, op));
+ "Result used, [RETURN] opcode=%X Op=%p\n", op->opcode, op));
return_VALUE (TRUE);
break;
@@ -123,7 +123,7 @@
if ((walk_state->control_state->common.state == CONTROL_PREDICATE_EXECUTING) &&
(walk_state->control_state->control.predicate_op == op)) {
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Result used as a predicate, [IF/WHILE] opcode=%X Op=%X\n",
+ "Result used as a predicate, [IF/WHILE] opcode=%X Op=%p\n",
op->opcode, op));
return_VALUE (TRUE);
}
@@ -135,7 +135,8 @@
/* Fall through to not used case below */
- case OPTYPE_NAMED_OBJECT: /* Scope, method, etc. */
+ case AML_CLASS_NAMED_OBJECT: /* Scope, method, etc. */
+ case AML_CLASS_CREATE:
/*
* These opcodes allow Term_arg(s) as operands and therefore
@@ -149,13 +150,13 @@
(op->parent->opcode == AML_CREATE_DWORD_FIELD_OP) ||
(op->parent->opcode == AML_CREATE_QWORD_FIELD_OP)) {
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Result used, [Region or Create_field] opcode=%X Op=%X\n",
+ "Result used, [Region or Create_field] opcode=%X Op=%p\n",
op->opcode, op));
return_VALUE (TRUE);
}
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Result not used, Parent opcode=%X Op=%X\n", op->opcode, op));
+ "Result not used, Parent opcode=%X Op=%p\n", op->opcode, op));
return_VALUE (FALSE);
break;
@@ -338,6 +339,11 @@
* very serious error at this point
*/
status = AE_AML_NAME_NOT_FOUND;
+
+ /* TBD: Externalize Name_string and print */
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "Object name was not found in namespace\n"));
}
}
@@ -580,16 +586,21 @@
op_info = acpi_ps_get_opcode_info (opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
/* Unknown opcode */
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown AML opcode: %x\n", opcode));
return (data_type);
}
- switch (ACPI_GET_OP_CLASS (op_info)) {
- case OPTYPE_LITERAL:
+/*
+ * TBD: Use op class
+ */
+
+ switch (op_info->type) {
+
+ case AML_TYPE_LITERAL:
switch (opcode) {
case AML_BYTE_OP:
@@ -618,7 +629,7 @@
break;
- case OPTYPE_DATA_TERM:
+ case AML_TYPE_DATA_TERM:
switch (opcode) {
case AML_BUFFER_OP:
@@ -640,44 +651,49 @@
break;
- case OPTYPE_CONSTANT:
- case OPTYPE_METHOD_ARGUMENT:
- case OPTYPE_LOCAL_VARIABLE:
+ case AML_TYPE_CONSTANT:
+ case AML_TYPE_METHOD_ARGUMENT:
+ case AML_TYPE_LOCAL_VARIABLE:
data_type = INTERNAL_TYPE_REFERENCE;
break;
- case OPTYPE_MONADIC2:
- case OPTYPE_MONADIC2_r:
- case OPTYPE_DYADIC2:
- case OPTYPE_DYADIC2_r:
- case OPTYPE_DYADIC2_s:
- case OPTYPE_TRIADIC:
- case OPTYPE_QUADRADIC:
- case OPTYPE_HEXADIC:
- case OPTYPE_RETURN:
+ case AML_TYPE_EXEC_1A_0T_1R:
+ case AML_TYPE_EXEC_1A_1T_1R:
+ case AML_TYPE_EXEC_2A_0T_1R:
+ case AML_TYPE_EXEC_2A_1T_1R:
+ case AML_TYPE_EXEC_2A_2T_1R:
+ case AML_TYPE_EXEC_3A_1T_1R:
+ case AML_TYPE_EXEC_6A_0T_1R:
+ case AML_TYPE_RETURN:
flags = OP_HAS_RETURN_VALUE;
data_type = ACPI_TYPE_ANY;
break;
- case OPTYPE_METHOD_CALL:
+ case AML_TYPE_METHOD_CALL:
flags = OP_HAS_RETURN_VALUE;
data_type = ACPI_TYPE_METHOD;
break;
- case OPTYPE_NAMED_OBJECT:
+ case AML_TYPE_NAMED_FIELD:
+ case AML_TYPE_NAMED_SIMPLE:
+ case AML_TYPE_NAMED_COMPLEX:
+ case AML_TYPE_NAMED_NO_OBJ:
data_type = acpi_ds_map_named_opcode_to_data_type (opcode);
break;
- case OPTYPE_DYADIC1:
- case OPTYPE_CONTROL:
+ case AML_TYPE_EXEC_1A_0T_0R:
+ case AML_TYPE_EXEC_2A_0T_0R:
+ case AML_TYPE_EXEC_3A_0T_0R:
+ case AML_TYPE_EXEC_1A_1T_0R:
+ case AML_TYPE_CONTROL:
/* No mapping needed at this time */
@@ -784,6 +800,7 @@
data_type = ACPI_TYPE_EVENT;
break;
+ case AML_DATA_REGION_OP:
case AML_REGION_OP:
data_type = ACPI_TYPE_REGION;
break;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dswexec.c linux/drivers/acpi/dispatcher/dswexec.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dswexec.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dswexec.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: dswexec - Dispatcher method execution callbacks;
* dispatch to interpreter.
- * $Revision: 70 $
+ * $Revision: 79 $
*
*****************************************************************************/
@@ -37,6 +37,21 @@
#define _COMPONENT ACPI_DISPATCHER
MODULE_NAME ("dswexec")
+/*
+ * Dispatch tables for opcode classes
+ */
+ACPI_EXECUTE_OP acpi_gbl_op_type_dispatch [] = {
+ acpi_ex_opcode_1A_0T_0R,
+ acpi_ex_opcode_1A_0T_1R,
+ acpi_ex_opcode_1A_1T_0R,
+ acpi_ex_opcode_1A_1T_1R,
+ acpi_ex_opcode_2A_0T_0R,
+ acpi_ex_opcode_2A_0T_1R,
+ acpi_ex_opcode_2A_1T_1R,
+ acpi_ex_opcode_2A_2T_1R,
+ acpi_ex_opcode_3A_0T_0R,
+ acpi_ex_opcode_3A_1T_1R,
+ acpi_ex_opcode_6A_0T_1R};
/*****************************************************************************
*
@@ -53,9 +68,7 @@
acpi_status
acpi_ds_get_predicate_value (
acpi_walk_state *walk_state,
- acpi_parse_object *op,
- u32 has_result_obj)
-{
+ u32 has_result_obj) {
acpi_status status = AE_OK;
acpi_operand_object *obj_desc;
@@ -77,7 +90,7 @@
}
else {
- status = acpi_ds_create_operand (walk_state, op, 0);
+ status = acpi_ds_create_operand (walk_state, walk_state->op, 0);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
@@ -91,7 +104,7 @@
}
if (!obj_desc) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No predicate Obj_desc=%X State=%X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No predicate Obj_desc=%p State=%p\n",
obj_desc, walk_state));
return_ACPI_STATUS (AE_AML_NO_OPERAND);
@@ -104,7 +117,7 @@
*/
if (obj_desc->common.type != ACPI_TYPE_INTEGER) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "Bad predicate (not a number) Obj_desc=%X State=%X Type=%X\n",
+ "Bad predicate (not a number) Obj_desc=%p State=%p Type=%X\n",
obj_desc, walk_state, obj_desc->common.type));
status = AE_AML_OPERAND_TYPE;
@@ -136,8 +149,8 @@
cleanup:
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%X\n",
- walk_state->control_state->common.value, op));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%pn",
+ walk_state->control_state->common.value, walk_state->op));
/* Break to debugger to display result */
@@ -159,8 +172,7 @@
* FUNCTION: Acpi_ds_exec_begin_op
*
* PARAMETERS: Walk_state - Current state of the parse tree walk
- * Op - Op that has been just been reached in the
- * walk; Arguments have not been evaluated yet.
+ * Out_op - Return op if a new one is created
*
* RETURN: Status
*
@@ -172,26 +184,28 @@
acpi_status
acpi_ds_exec_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op)
{
- const acpi_opcode_info *op_info;
+ acpi_parse_object *op;
acpi_status status = AE_OK;
- u8 opcode_class;
+ u32 opcode_class;
- FUNCTION_TRACE_PTR ("Ds_exec_begin_op", op);
+ FUNCTION_TRACE_PTR ("Ds_exec_begin_op", walk_state);
+ op = walk_state->op;
if (!op) {
- status = acpi_ds_load2_begin_op (opcode, NULL, walk_state, out_op);
+ status = acpi_ds_load2_begin_op (walk_state, out_op);
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
}
op = *out_op;
+ walk_state->op = op;
+ walk_state->op_info = acpi_ps_get_opcode_info (op->opcode);
+ walk_state->opcode = op->opcode;
}
if (op == walk_state->origin) {
@@ -210,7 +224,7 @@
if ((walk_state->control_state) &&
(walk_state->control_state->common.state ==
CONTROL_CONDITIONAL_EXECUTING)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%X State=%X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n",
op, walk_state));
walk_state->control_state->common.state = CONTROL_PREDICATE_EXECUTING;
@@ -221,20 +235,19 @@
}
- op_info = acpi_ps_get_opcode_info (op->opcode);
- opcode_class = (u8) ACPI_GET_OP_CLASS (op_info);
+ opcode_class = walk_state->op_info->class;
/* We want to send namepaths to the load code */
if (op->opcode == AML_INT_NAMEPATH_OP) {
- opcode_class = OPTYPE_NAMED_OBJECT;
+ opcode_class = AML_CLASS_NAMED_OBJECT;
}
/*
* Handle the opcode based upon the opcode type
*/
switch (opcode_class) {
- case OPTYPE_CONTROL:
+ case AML_CLASS_CONTROL:
status = acpi_ds_result_stack_push (walk_state);
if (ACPI_FAILURE (status)) {
@@ -245,7 +258,7 @@
break;
- case OPTYPE_NAMED_OBJECT:
+ case AML_CLASS_NAMED_OBJECT:
if (walk_state->walk_type == WALK_METHOD) {
/*
@@ -255,7 +268,7 @@
* will be deleted upon completion of the execution
* of this method.
*/
- status = acpi_ds_load2_begin_op (op->opcode, op, walk_state, NULL);
+ status = acpi_ds_load2_begin_op (walk_state, NULL);
}
@@ -268,18 +281,8 @@
/* most operators with arguments */
- case OPTYPE_MONADIC1:
- case OPTYPE_DYADIC1:
- case OPTYPE_MONADIC2:
- case OPTYPE_MONADIC2_r:
- case OPTYPE_DYADIC2:
- case OPTYPE_DYADIC2_r:
- case OPTYPE_DYADIC2_s:
- case OPTYPE_RECONFIGURATION:
- case OPTYPE_TRIADIC:
- case OPTYPE_QUADRADIC:
- case OPTYPE_HEXADIC:
- case OPTYPE_CREATE_FIELD:
+ case AML_CLASS_EXECUTE:
+ case AML_CLASS_CREATE:
/* Start a new result/operand state */
@@ -315,85 +318,53 @@
acpi_status
acpi_ds_exec_end_op (
- acpi_walk_state *walk_state,
- acpi_parse_object *op)
+ acpi_walk_state *walk_state)
{
+ acpi_parse_object *op;
acpi_status status = AE_OK;
- u16 opcode;
- u8 optype;
+ u32 op_type;
+ u32 op_class;
acpi_parse_object *next_op;
acpi_parse_object *first_arg;
- acpi_operand_object *result_obj = NULL;
- const acpi_opcode_info *op_info;
u32 i;
- FUNCTION_TRACE_PTR ("Ds_exec_end_op", op);
-
+ FUNCTION_TRACE_PTR ("Ds_exec_end_op", walk_state);
- opcode = (u16) op->opcode;
+ op = walk_state->op;
+ op_type = walk_state->op_info->type;
+ op_class = walk_state->op_info->class;
- op_info = acpi_ps_get_opcode_info (op->opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_class == AML_CLASS_UNKNOWN) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown opcode %X\n", op->opcode));
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
}
- optype = (u8) ACPI_GET_OP_CLASS (op_info);
first_arg = op->value.arg;
/* Init the walk state */
walk_state->num_operands = 0;
walk_state->return_desc = NULL;
- walk_state->op_info = op_info;
- walk_state->opcode = opcode;
+ walk_state->result_obj = NULL;
/* Call debugger for single step support (DEBUG build only) */
- DEBUGGER_EXEC (status = acpi_db_single_step (walk_state, op, optype));
+ DEBUGGER_EXEC (status = acpi_db_single_step (walk_state, op, op_class));
DEBUGGER_EXEC (if (ACPI_FAILURE (status)) {return_ACPI_STATUS (status);});
- /* Decode the opcode */
-
- switch (optype) {
- case OPTYPE_UNDEFINED:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Undefined opcode type Op=%X\n", op));
- return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
- break;
-
-
- case OPTYPE_BOGUS:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Internal opcode=%X type Op=%X\n",
- opcode, op));
- break;
+ switch (op_class) {
+ /* Decode the Opcode Class */
- case OPTYPE_CONSTANT: /* argument type only */
- case OPTYPE_LITERAL: /* argument type only */
- case OPTYPE_DATA_TERM: /* argument type only */
- case OPTYPE_LOCAL_VARIABLE: /* argument type only */
- case OPTYPE_METHOD_ARGUMENT: /* argument type only */
+ case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */
break;
-
/* most operators with arguments */
- case OPTYPE_MONADIC1:
- case OPTYPE_DYADIC1:
- case OPTYPE_MONADIC2:
- case OPTYPE_MONADIC2_r:
- case OPTYPE_DYADIC2:
- case OPTYPE_DYADIC2_r:
- case OPTYPE_DYADIC2_s:
- case OPTYPE_RECONFIGURATION:
- case OPTYPE_TRIADIC:
- case OPTYPE_QUADRADIC:
- case OPTYPE_HEXADIC:
-
+ case AML_CLASS_EXECUTE:
/* Build resolved operand stack */
@@ -411,14 +382,14 @@
/* Resolve all operands */
- status = acpi_ex_resolve_operands (opcode,
+ status = acpi_ex_resolve_operands (walk_state->opcode,
&(walk_state->operands [walk_state->num_operands -1]),
walk_state);
if (ACPI_FAILURE (status)) {
/* TBD: must pop and delete operands */
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "[%s]: Could not resolve operands, %s\n",
- acpi_ps_get_opcode_name (opcode), acpi_format_exception (status)));
+ acpi_ps_get_opcode_name (walk_state->opcode), acpi_format_exception (status)));
/*
* On error, we must delete all the operands and clear the
@@ -430,103 +401,31 @@
}
walk_state->num_operands = 0;
-
goto cleanup;
}
- DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, acpi_ps_get_opcode_name (opcode),
+ DUMP_OPERANDS (WALK_OPERANDS, IMODE_EXECUTE, acpi_ps_get_opcode_name (walk_state->opcode),
walk_state->num_operands, "after Ex_resolve_operands");
- switch (optype) {
- case OPTYPE_MONADIC1:
-
- /* 1 Operand, 0 External_result, 0 Internal_result */
-
- status = acpi_ex_monadic1 (opcode, walk_state);
- break;
-
-
- case OPTYPE_MONADIC2:
-
- /* 1 Operand, 0 External_result, 1 Internal_result */
-
- status = acpi_ex_monadic2 (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_MONADIC2_r:
-
- /* 1 Operand, 1 External_result, 1 Internal_result */
-
- status = acpi_ex_monadic2_r (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_DYADIC1:
-
- /* 2 Operands, 0 External_result, 0 Internal_result */
-
- status = acpi_ex_dyadic1 (opcode, walk_state);
- break;
-
-
- case OPTYPE_DYADIC2:
-
- /* 2 Operands, 0 External_result, 1 Internal_result */
-
- status = acpi_ex_dyadic2 (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_DYADIC2_r:
-
- /* 2 Operands, 1 or 2 External_results, 1 Internal_result */
-
- status = acpi_ex_dyadic2_r (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_DYADIC2_s: /* Synchronization Operator */
-
- /* 2 Operands, 0 External_result, 1 Internal_result */
-
- status = acpi_ex_dyadic2_s (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_TRIADIC: /* Opcode with 3 operands */
-
- /* 3 Operands, 1 External_result, 1 Internal_result */
-
- status = acpi_ex_triadic (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_QUADRADIC: /* Opcode with 4 operands */
- break;
-
-
- case OPTYPE_HEXADIC: /* Opcode with 6 operands */
-
- /* 6 Operands, 0 External_result, 1 Internal_result */
-
- status = acpi_ex_hexadic (opcode, walk_state, &result_obj);
- break;
-
-
- case OPTYPE_RECONFIGURATION:
-
- /* 1 or 2 operands, 0 Internal Result */
+ /*
+ * Dispatch the request to the appropriate interpreter handler
+ * routine. There is one routine per opcode "type" based upon the
+ * number of opcode arguments and return type.
+ */
+ status = acpi_gbl_op_type_dispatch [op_type] (walk_state);
- status = acpi_ex_reconfiguration (opcode, walk_state);
- break;
- }
- /* Clear the operand stack */
+ /* Delete argument objects and clear the operand stack */
for (i = 0; i < walk_state->num_operands; i++) {
+ /*
+ * Remove a reference to all operands, including both
+ * "Arguments" and "Targets".
+ */
+ acpi_ut_remove_reference (walk_state->operands[i]);
walk_state->operands[i] = NULL;
}
+
walk_state->num_operands = 0;
/*
@@ -534,144 +433,140 @@
* current result stack
*/
if (ACPI_SUCCESS (status) &&
- result_obj) {
- status = acpi_ds_result_push (result_obj, walk_state);
+ walk_state->result_obj) {
+ status = acpi_ds_result_push (walk_state->result_obj, walk_state);
}
break;
- case OPTYPE_CONTROL: /* Type 1 opcode, IF/ELSE/WHILE/NOOP */
+ default:
- /* 1 Operand, 0 External_result, 0 Internal_result */
+ switch (op_type) {
+ case AML_TYPE_CONTROL: /* Type 1 opcode, IF/ELSE/WHILE/NOOP */
- status = acpi_ds_exec_end_control_op (walk_state, op);
+ /* 1 Operand, 0 External_result, 0 Internal_result */
- acpi_ds_result_stack_pop (walk_state);
- break;
+ status = acpi_ds_exec_end_control_op (walk_state, op);
+ acpi_ds_result_stack_pop (walk_state);
+ break;
- case OPTYPE_METHOD_CALL:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method invocation, Op=%X\n", op));
+ case AML_TYPE_METHOD_CALL:
- /*
- * (AML_METHODCALL) Op->Value->Arg->Node contains
- * the method Node pointer
- */
- /* Next_op points to the op that holds the method name */
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method invocation, Op=%p\n", op));
- next_op = first_arg;
+ /*
+ * (AML_METHODCALL) Op->Value->Arg->Node contains
+ * the method Node pointer
+ */
+ /* Next_op points to the op that holds the method name */
- /* Next_op points to first argument op */
+ next_op = first_arg;
- next_op = next_op->next;
+ /* Next_op points to first argument op */
- /*
- * Get the method's arguments and put them on the operand stack
- */
- status = acpi_ds_create_operands (walk_state, next_op);
- if (ACPI_FAILURE (status)) {
- break;
- }
-
- /*
- * Since the operands will be passed to another
- * control method, we must resolve all local
- * references here (Local variables, arguments
- * to *this* method, etc.)
- */
- status = acpi_ds_resolve_operands (walk_state);
- if (ACPI_FAILURE (status)) {
- break;
- }
-
- /*
- * Tell the walk loop to preempt this running method and
- * execute the new method
- */
- status = AE_CTRL_TRANSFER;
-
- /*
- * Return now; we don't want to disturb anything,
- * especially the operand count!
- */
- return_ACPI_STATUS (status);
- break;
+ next_op = next_op->next;
+ /*
+ * Get the method's arguments and put them on the operand stack
+ */
+ status = acpi_ds_create_operands (walk_state, next_op);
+ if (ACPI_FAILURE (status)) {
+ break;
+ }
- case OPTYPE_CREATE_FIELD:
+ /*
+ * Since the operands will be passed to another
+ * control method, we must resolve all local
+ * references here (Local variables, arguments
+ * to *this* method, etc.)
+ */
+ status = acpi_ds_resolve_operands (walk_state);
+ if (ACPI_FAILURE (status)) {
+ break;
+ }
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
- "Executing Create_field Buffer/Index Op=%X\n", op));
+ /*
+ * Tell the walk loop to preempt this running method and
+ * execute the new method
+ */
+ status = AE_CTRL_TRANSFER;
- status = acpi_ds_load2_end_op (walk_state, op);
- if (ACPI_FAILURE (status)) {
+ /*
+ * Return now; we don't want to disturb anything,
+ * especially the operand count!
+ */
+ return_ACPI_STATUS (status);
break;
- }
- status = acpi_ds_eval_buffer_field_operands (walk_state, op);
- break;
+ case AML_TYPE_CREATE_FIELD:
- case OPTYPE_NAMED_OBJECT:
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
+ "Executing Create_field Buffer/Index Op=%p\n", op));
- status = acpi_ds_load2_end_op (walk_state, op);
- if (ACPI_FAILURE (status)) {
+ status = acpi_ds_load2_end_op (walk_state);
+ if (ACPI_FAILURE (status)) {
+ break;
+ }
+
+ status = acpi_ds_eval_buffer_field_operands (walk_state, op);
break;
- }
- switch (op->opcode) {
- case AML_REGION_OP:
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
- "Executing Op_region Address/Length Op=%X\n", op));
+ case AML_TYPE_NAMED_FIELD:
+ case AML_TYPE_NAMED_COMPLEX:
+ case AML_TYPE_NAMED_SIMPLE:
- status = acpi_ds_eval_region_operands (walk_state, op);
+ status = acpi_ds_load2_end_op (walk_state);
if (ACPI_FAILURE (status)) {
break;
}
- status = acpi_ds_result_stack_pop (walk_state);
- break;
+ if (op->opcode == AML_REGION_OP) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
+ "Executing Op_region Address/Length Op=%p\n", op));
+
+ status = acpi_ds_eval_region_operands (walk_state, op);
+ if (ACPI_FAILURE (status)) {
+ break;
+ }
+ status = acpi_ds_result_stack_pop (walk_state);
+ }
- case AML_METHOD_OP:
break;
+ case AML_TYPE_UNDEFINED:
- case AML_ALIAS_OP:
-
- /* Alias creation was already handled by call
- to psxload above */
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Undefined opcode type Op=%p\n", op));
+ return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
break;
- default:
- /* Nothing needs to be done */
-
- status = AE_OK;
+ case AML_TYPE_BOGUS:
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Internal opcode=%X type Op=%p\n",
+ walk_state->opcode, op));
break;
- }
-
- break;
- default:
+ default:
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "Unimplemented opcode, type=%X Opcode=%X Op=%X\n",
- optype, op->opcode, op));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
+ "Unimplemented opcode, class=%X type=%X Opcode=%X Op=%p\n",
+ op_class, op_type, op->opcode, op));
- status = AE_NOT_IMPLEMENTED;
- break;
+ status = AE_NOT_IMPLEMENTED;
+ break;
+ }
}
-
/*
* ACPI 2.0 support for 64-bit integers:
* Truncate numeric result value if we are executing from a 32-bit ACPI table
*/
- acpi_ex_truncate_for32bit_table (result_obj, walk_state);
+ acpi_ex_truncate_for32bit_table (walk_state->result_obj, walk_state);
/*
* Check if we just completed the evaluation of a
@@ -682,23 +577,23 @@
(walk_state->control_state->common.state ==
CONTROL_PREDICATE_EXECUTING) &&
(walk_state->control_state->control.predicate_op == op)) {
- status = acpi_ds_get_predicate_value (walk_state, op, (u32) result_obj);
- result_obj = NULL;
+ status = acpi_ds_get_predicate_value (walk_state, (u32) walk_state->result_obj);
+ walk_state->result_obj = NULL;
}
cleanup:
- if (result_obj) {
+ if (walk_state->result_obj) {
/* Break to debugger to display result */
- DEBUGGER_EXEC (acpi_db_display_result_object (result_obj, walk_state));
+ DEBUGGER_EXEC (acpi_db_display_result_object (walk_state->result_obj, walk_state));
/*
* Delete the result op if and only if:
* Parent will not use the result -- such as any
* non-nested type2 op in a method (parent will be method)
*/
- acpi_ds_delete_result_if_not_used (op, result_obj, walk_state);
+ acpi_ds_delete_result_if_not_used (op, walk_state->result_obj, walk_state);
}
/* Always clear the object stack */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dswload.c linux/drivers/acpi/dispatcher/dswload.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dswload.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dswload.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswload - Dispatcher namespace load callbacks
- * $Revision: 44 $
+ * $Revision: 50 $
*
*****************************************************************************/
@@ -39,6 +39,53 @@
/*******************************************************************************
*
+ * FUNCTION: Acpi_ds_init_callbacks
+ *
+ * PARAMETERS: Walk_state - Current state of the parse tree walk
+ * Pass_number - 1, 2, or 3
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Init walk state callbacks
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ds_init_callbacks (
+ acpi_walk_state *walk_state,
+ u32 pass_number)
+{
+
+ switch (pass_number) {
+ case 1:
+ walk_state->parse_flags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE;
+ walk_state->descending_callback = acpi_ds_load1_begin_op;
+ walk_state->ascending_callback = acpi_ds_load1_end_op;
+ break;
+
+ case 2:
+ walk_state->parse_flags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE;
+ walk_state->descending_callback = acpi_ds_load2_begin_op;
+ walk_state->ascending_callback = acpi_ds_load2_end_op;
+ break;
+
+ case 3:
+ walk_state->parse_flags |= ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE;
+ walk_state->descending_callback = acpi_ds_exec_begin_op;
+ walk_state->ascending_callback = acpi_ds_exec_end_op;
+ break;
+
+ default:
+ return (AE_BAD_PARAMETER);
+ break;
+ }
+
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: Acpi_ds_load1_begin_op
*
* PARAMETERS: Walk_state - Current state of the parse tree walk
@@ -53,49 +100,50 @@
acpi_status
acpi_ds_load1_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op)
{
+ acpi_parse_object *op;
acpi_namespace_node *node;
acpi_status status;
acpi_object_type8 data_type;
NATIVE_CHAR *path;
- const acpi_opcode_info *op_info;
PROC_NAME ("Ds_load1_begin_op");
+
+ op = walk_state->op;
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", op, walk_state));
/* We are only interested in opcodes that have an associated name */
- op_info = acpi_ps_get_opcode_info (opcode);
- if (!(op_info->flags & AML_NAMED)) {
- *out_op = op;
- return (AE_OK);
- }
+ if (walk_state->op) {
+ if (!(walk_state->op_info->flags & AML_NAMED)) {
+ *out_op = op;
+ return (AE_OK);
+ }
- /* Check if this object has already been installed in the namespace */
+ /* Check if this object has already been installed in the namespace */
- if (op && op->node) {
- *out_op = op;
- return (AE_OK);
+ if (op->node) {
+ *out_op = op;
+ return (AE_OK);
+ }
}
- path = acpi_ps_get_next_namestring (walk_state->parser_state);
+ path = acpi_ps_get_next_namestring (&walk_state->parser_state);
/* Map the raw opcode into an internal object type */
- data_type = acpi_ds_map_named_opcode_to_data_type (opcode);
+ data_type = acpi_ds_map_named_opcode_to_data_type (walk_state->opcode);
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
"State=%p Op=%p Type=%x\n", walk_state, op, data_type));
- if (opcode == AML_SCOPE_OP) {
+ if (walk_state->opcode == AML_SCOPE_OP) {
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
"State=%p Op=%p Type=%x\n", walk_state, op, data_type));
}
@@ -115,7 +163,7 @@
if (!op) {
/* Create a new op */
- op = acpi_ps_alloc_op (opcode);
+ op = acpi_ps_alloc_op (walk_state->opcode);
if (!op) {
return (AE_NO_MEMORY);
}
@@ -130,7 +178,7 @@
* can get it again quickly when this scope is closed
*/
op->node = node;
- acpi_ps_append_arg (acpi_ps_get_parent_scope (walk_state->parser_state), op);
+ acpi_ps_append_arg (acpi_ps_get_parent_scope (&walk_state->parser_state), op);
*out_op = op;
return (status);
@@ -154,21 +202,21 @@
acpi_status
acpi_ds_load1_end_op (
- acpi_walk_state *walk_state,
- acpi_parse_object *op)
+ acpi_walk_state *walk_state)
{
+ acpi_parse_object *op;
acpi_object_type8 data_type;
- const acpi_opcode_info *op_info;
PROC_NAME ("Ds_load1_end_op");
+
+ op = walk_state->op;
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", op, walk_state));
/* We are only interested in opcodes that have an associated name */
- op_info = acpi_ps_get_opcode_info (op->opcode);
- if (!(op_info->flags & AML_NAMED)) {
+ if (!(walk_state->op_info->flags & AML_NAMED)) {
return (AE_OK);
}
@@ -216,42 +264,41 @@
acpi_status
acpi_ds_load2_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op)
{
+ acpi_parse_object *op;
acpi_namespace_node *node;
acpi_status status;
acpi_object_type8 data_type;
NATIVE_CHAR *buffer_ptr;
void *original = NULL;
- const acpi_opcode_info *op_info;
PROC_NAME ("Ds_load2_begin_op");
+
+ op = walk_state->op;
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", op, walk_state));
- /* We only care about Namespace opcodes here */
+ if (op) {
+ /* We only care about Namespace opcodes here */
- op_info = acpi_ps_get_opcode_info (opcode);
- if (!(op_info->flags & AML_NSOPCODE) &&
- opcode != AML_INT_NAMEPATH_OP) {
- return (AE_OK);
- }
+ if (!(walk_state->op_info->flags & AML_NSOPCODE) &&
+ walk_state->opcode != AML_INT_NAMEPATH_OP) {
+ return (AE_OK);
+ }
- /* TBD: [Restructure] Temp! same code as in psparse */
+ /* TBD: [Restructure] Temp! same code as in psparse */
- if (!(op_info->flags & AML_NAMED)) {
- return (AE_OK);
- }
+ if (!(walk_state->op_info->flags & AML_NAMED)) {
+ return (AE_OK);
+ }
- if (op) {
/*
* Get the name we are going to enter or lookup in the namespace
*/
- if (opcode == AML_INT_NAMEPATH_OP) {
+ if (walk_state->opcode == AML_INT_NAMEPATH_OP) {
/* For Namepath op, get the path string */
buffer_ptr = op->value.string;
@@ -261,35 +308,33 @@
return (AE_OK);
}
}
-
else {
/* Get name from the op */
buffer_ptr = (NATIVE_CHAR *) &((acpi_parse2_object *)op)->name;
}
}
-
else {
- buffer_ptr = acpi_ps_get_next_namestring (walk_state->parser_state);
+ buffer_ptr = acpi_ps_get_next_namestring (&walk_state->parser_state);
}
/* Map the raw opcode into an internal object type */
- data_type = acpi_ds_map_named_opcode_to_data_type (opcode);
+ data_type = acpi_ds_map_named_opcode_to_data_type (walk_state->opcode);
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
"State=%p Op=%p Type=%x\n", walk_state, op, data_type));
- if (opcode == AML_FIELD_OP ||
- opcode == AML_BANK_FIELD_OP ||
- opcode == AML_INDEX_FIELD_OP) {
+ if (walk_state->opcode == AML_FIELD_OP ||
+ walk_state->opcode == AML_BANK_FIELD_OP ||
+ walk_state->opcode == AML_INDEX_FIELD_OP) {
node = NULL;
status = AE_OK;
}
- else if (opcode == AML_INT_NAMEPATH_OP) {
+ else if (walk_state->opcode == AML_INT_NAMEPATH_OP) {
/*
* The Name_path is an object reference to an existing object. Don't enter the
* name into the namespace, but look it up for use later
@@ -326,7 +371,7 @@
if (!op) {
/* Create a new op */
- op = acpi_ps_alloc_op (opcode);
+ op = acpi_ps_alloc_op (walk_state->opcode);
if (!op) {
return (AE_NO_MEMORY);
}
@@ -374,25 +419,26 @@
acpi_status
acpi_ds_load2_end_op (
- acpi_walk_state *walk_state,
- acpi_parse_object *op)
+ acpi_walk_state *walk_state)
{
+ acpi_parse_object *op;
acpi_status status = AE_OK;
acpi_object_type8 data_type;
acpi_namespace_node *node;
acpi_parse_object *arg;
acpi_namespace_node *new_node;
- const acpi_opcode_info *op_info;
+ u32 i;
PROC_NAME ("Ds_load2_end_op");
+
+ op = walk_state->op;
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", op, walk_state));
/* Only interested in opcodes that have namespace objects */
- op_info = acpi_ps_get_opcode_info (op->opcode);
- if (!(op_info->flags & AML_NSOBJECT)) {
+ if (!(walk_state->op_info->flags & AML_NSOBJECT)) {
return (AE_OK);
}
@@ -435,323 +481,210 @@
/*
* Named operations are as follows:
*
- * AML_SCOPE
- * AML_DEVICE
- * AML_THERMALZONE
- * AML_METHOD
- * AML_POWERRES
- * AML_PROCESSOR
- * AML_FIELD
- * AML_INDEXFIELD
- * AML_BANKFIELD
- * AML_NAMEDFIELD
- * AML_NAME
* AML_ALIAS
- * AML_MUTEX
- * AML_EVENT
- * AML_OPREGION
- * AML_CREATEFIELD
+ * AML_BANKFIELD
* AML_CREATEBITFIELD
* AML_CREATEBYTEFIELD
- * AML_CREATEWORDFIELD
* AML_CREATEDWORDFIELD
+ * AML_CREATEFIELD
* AML_CREATEQWORDFIELD
+ * AML_CREATEWORDFIELD
+ * AML_DATA_REGION
+ * AML_DEVICE
+ * AML_EVENT
+ * AML_FIELD
+ * AML_INDEXFIELD
+ * AML_METHOD
* AML_METHODCALL
+ * AML_MUTEX
+ * AML_NAME
+ * AML_NAMEDFIELD
+ * AML_OPREGION
+ * AML_POWERRES
+ * AML_PROCESSOR
+ * AML_SCOPE
+ * AML_THERMALZONE
*/
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
+ "Create-Load [%s] State=%p Op=%p Named_obj=%p\n",
+ acpi_ps_get_opcode_name (op->opcode), walk_state, op, node));
/* Decode the opcode */
arg = op->value.arg;
- switch (op->opcode) {
-
- case AML_CREATE_FIELD_OP:
- case AML_CREATE_BIT_FIELD_OP:
- case AML_CREATE_BYTE_FIELD_OP:
- case AML_CREATE_WORD_FIELD_OP:
- case AML_CREATE_DWORD_FIELD_OP:
- case AML_CREATE_QWORD_FIELD_OP:
+ switch (walk_state->op_info->type) {
+ case AML_TYPE_CREATE_FIELD:
/*
* Create the field object, but the field buffer and index must
* be evaluated later during the execution phase
*/
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Create_xxx_field: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
-
- /* Get the Name_string argument */
-
- if (op->opcode == AML_CREATE_FIELD_OP) {
- arg = acpi_ps_get_arg (op, 3);
- }
- else {
- /* Create Bit/Byte/Word/Dword field */
-
- arg = acpi_ps_get_arg (op, 2);
- }
-
- if (!arg) {
- status = AE_AML_NO_OPERAND;
- goto cleanup;
- }
-
- /*
- * Enter the Name_string into the namespace
- */
- status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
- INTERNAL_TYPE_DEF_ANY, IMODE_LOAD_PASS1,
- NS_NO_UPSEARCH | NS_DONT_OPEN_SCOPE,
- walk_state, &(new_node));
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- /* We could put the returned object (Node) on the object stack for later, but
- * for now, we will put it in the "op" object that the parser uses, so we
- * can get it again at the end of this scope
- */
- op->node = new_node;
-
- /*
- * If there is no object attached to the node, this node was just created and
- * we need to create the field object. Otherwise, this was a lookup of an
- * existing node and we don't want to create the field object again.
- */
- if (!new_node->object) {
- /*
- * The Field definition is not fully parsed at this time.
- * (We must save the address of the AML for the buffer and index operands)
- */
- status = acpi_ex_create_buffer_field (((acpi_parse2_object *) op)->data,
- ((acpi_parse2_object *) op)->length,
- new_node, walk_state);
- }
+ status = acpi_ds_create_buffer_field (op, walk_state);
break;
- case AML_INT_METHODCALL_OP:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "RESOLVING-Method_call: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
-
- /*
- * Lookup the method name and save the Node
- */
- status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
- ACPI_TYPE_ANY, IMODE_LOAD_PASS2,
- NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE,
- walk_state, &(new_node));
- if (ACPI_SUCCESS (status)) {
- /* TBD: has name already been resolved by here ??*/
-
- /* TBD: [Restructure] Make sure that what we found is indeed a method! */
- /* We didn't search for a method on purpose, to see if the name would resolve! */
+ case AML_TYPE_NAMED_FIELD:
- /* We could put the returned object (Node) on the object stack for later, but
- * for now, we will put it in the "op" object that the parser uses, so we
- * can get it again at the end of this scope
- */
- op->node = new_node;
- }
+ arg = op->value.arg;
+ switch (op->opcode) {
+ case AML_INDEX_FIELD_OP:
+ status = acpi_ds_create_index_field (op, (acpi_handle) arg->node,
+ walk_state);
+ break;
- break;
+ case AML_BANK_FIELD_OP:
- case AML_PROCESSOR_OP:
+ status = acpi_ds_create_bank_field (op, arg->node, walk_state);
+ break;
- /* Nothing to do other than enter object into namespace */
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Processor: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
+ case AML_FIELD_OP:
- status = acpi_ex_create_processor (op, node);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
+ status = acpi_ds_create_field (op, arg->node, walk_state);
+ break;
}
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Completed Processor Init, Op=%p State=%p entry=%p\n",
- op, walk_state, node));
break;
- case AML_POWER_RES_OP:
+ case AML_TYPE_NAMED_SIMPLE:
- /* Nothing to do other than enter object into namespace */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Power_resource: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
-
- status = acpi_ex_create_power_resource (op, node);
+ status = acpi_ds_create_operands (walk_state, arg);
if (ACPI_FAILURE (status)) {
goto cleanup;
}
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Completed Power_resource Init, Op=%p State=%p entry=%p\n",
- op, walk_state, node));
- break;
-
-
- case AML_THERMAL_ZONE_OP:
-
- /* Nothing to do other than enter object into namespace */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Thermal_zone: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
- break;
+ switch (op->opcode) {
+ case AML_PROCESSOR_OP:
+ status = acpi_ex_create_processor (walk_state);
+ break;
- case AML_FIELD_OP:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Field: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
+ case AML_POWER_RES_OP:
- arg = op->value.arg;
+ status = acpi_ex_create_power_resource (walk_state);
+ break;
- status = acpi_ds_create_field (op, arg->node, walk_state);
- break;
+ case AML_MUTEX_OP:
- case AML_INDEX_FIELD_OP:
+ status = acpi_ex_create_mutex (walk_state);
+ break;
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Index_field: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
- arg = op->value.arg;
-
- status = acpi_ds_create_index_field (op, (acpi_handle) arg->node,
- walk_state);
- break;
+ case AML_EVENT_OP:
+ status = acpi_ex_create_event (walk_state);
+ break;
- case AML_BANK_FIELD_OP:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Bank_field: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
+ case AML_DATA_REGION_OP:
- arg = op->value.arg;
- status = acpi_ds_create_bank_field (op, arg->node, walk_state);
- break;
+ status = acpi_ex_create_table_region (walk_state);
+ break;
+ case AML_ALIAS_OP:
- /*
- * Method_op Pkg_length Names_string Method_flags Term_list
- */
- case AML_METHOD_OP:
+ status = acpi_ex_create_alias (walk_state);
+ break;
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Method: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
+ default:
+ /* Unknown opcode */
- if (!node->object) {
- status = acpi_ex_create_method (((acpi_parse2_object *) op)->data,
- ((acpi_parse2_object *) op)->length,
- arg->value.integer32, node);
+ status = AE_OK;
+ goto cleanup;
+ break;
}
- break;
+ /* Delete operands */
- case AML_MUTEX_OP:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Mutex: Op=%p State=%p\n", op, walk_state));
-
- status = acpi_ds_create_operands (walk_state, arg);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
+ for (i = 1; i < walk_state->num_operands; i++) {
+ acpi_ut_remove_reference (walk_state->operands[i]);
+ walk_state->operands[i] = NULL;
}
- status = acpi_ex_create_mutex (walk_state);
break;
- case AML_EVENT_OP:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Event: Op=%p State=%p\n", op, walk_state));
+ case AML_TYPE_NAMED_COMPLEX:
- status = acpi_ds_create_operands (walk_state, arg);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
+ switch (op->opcode) {
+ case AML_METHOD_OP:
+ /*
+ * Method_op Pkg_length Names_string Method_flags Term_list
+ */
+ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
+ "LOADING-Method: State=%p Op=%p Named_obj=%p\n",
+ walk_state, op, node));
- status = acpi_ex_create_event (walk_state);
- break;
+ if (!node->object) {
+ status = acpi_ds_create_operands (walk_state, arg);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+ status = acpi_ex_create_method (((acpi_parse2_object *) op)->data,
+ ((acpi_parse2_object *) op)->length,
+ walk_state);
+ }
+ break;
- case AML_REGION_OP:
- if (node->object) {
+ case AML_REGION_OP:
+ /*
+ * The Op_region is not fully parsed at this time. Only valid argument is the Space_id.
+ * (We must save the address of the AML of the address and length operands)
+ */
+ status = acpi_ex_create_region (((acpi_parse2_object *) op)->data,
+ ((acpi_parse2_object *) op)->length,
+ (ACPI_ADR_SPACE_TYPE) arg->value.integer, walk_state);
break;
- }
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Opregion: Op=%p State=%p Named_obj=%p\n",
- op, walk_state, node));
- /*
- * The Op_region is not fully parsed at this time. Only valid argument is the Space_id.
- * (We must save the address of the AML of the address and length operands)
- */
- status = acpi_ex_create_region (((acpi_parse2_object *) op)->data,
- ((acpi_parse2_object *) op)->length,
- (ACPI_ADR_SPACE_TYPE) arg->value.integer, walk_state);
+ case AML_NAME_OP:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "Completed Op_region Init, Op=%p State=%p entry=%p\n",
- op, walk_state, node));
+ status = acpi_ds_create_node (walk_state, node, op);
+ break;
+ }
break;
- /* Namespace Modifier Opcodes */
-
- case AML_ALIAS_OP:
+ case AML_CLASS_INTERNAL:
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Alias: Op=%p State=%p\n", op, walk_state));
-
- status = acpi_ds_create_operands (walk_state, arg);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- status = acpi_ex_create_alias (walk_state);
+ /* case AML_INT_NAMEPATH_OP: */
break;
- case AML_NAME_OP:
+ case AML_CLASS_METHOD_CALL:
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Name: Op=%p State=%p\n", op, walk_state));
+ "RESOLVING-Method_call: State=%p Op=%p Named_obj=%p\n",
+ walk_state, op, node));
/*
- * Because of the execution pass through the non-control-method
- * parts of the table, we can arrive here twice. Only init
- * the named object node the first time through
+ * Lookup the method name and save the Node
*/
- if (!node->object) {
- status = acpi_ds_create_node (walk_state, node, op);
- }
-
- break;
+ status = acpi_ns_lookup (walk_state->scope_info, arg->value.string,
+ ACPI_TYPE_ANY, IMODE_LOAD_PASS2,
+ NS_SEARCH_PARENT | NS_DONT_OPEN_SCOPE,
+ walk_state, &(new_node));
+ if (ACPI_SUCCESS (status)) {
+ /* TBD: has name already been resolved by here ??*/
+ /* TBD: [Restructure] Make sure that what we found is indeed a method! */
+ /* We didn't search for a method on purpose, to see if the name would resolve! */
- case AML_INT_NAMEPATH_OP:
+ /* We could put the returned object (Node) on the object stack for later, but
+ * for now, we will put it in the "op" object that the parser uses, so we
+ * can get it again at the end of this scope
+ */
+ op->node = new_node;
+ }
- ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
- "LOADING-Name_path object: State=%p Op=%p Named_obj=%p\n",
- walk_state, op, node));
break;
@@ -764,7 +697,8 @@
/* Remove the Node pushed at the very beginning */
- acpi_ds_obj_stack_pop (1, walk_state);
+ walk_state->operands[0] = NULL;
+ walk_state->num_operands = 0;
return (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dswscope.c linux/drivers/acpi/dispatcher/dswscope.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dswscope.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dswscope.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswscope - Scope stack manipulation
- * $Revision: 48 $
+ * $Revision: 49 $
*
*****************************************************************************/
@@ -116,8 +116,9 @@
/* Init new scope object */
- scope_info->scope.node = node;
- scope_info->common.value = (u16) type;
+ scope_info->common.data_type = ACPI_DESC_TYPE_STATE_WSCOPE;
+ scope_info->scope.node = node;
+ scope_info->common.value = (u16) type;
/* Push new scope object onto stack */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/dispatcher/dswstate.c linux/drivers/acpi/dispatcher/dswstate.c
--- v2.4.13/linux/drivers/acpi/dispatcher/dswstate.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/dispatcher/dswstate.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dswstate - Dispatcher parse tree walk management routines
- * $Revision: 51 $
+ * $Revision: 54 $
*
*****************************************************************************/
@@ -368,6 +368,7 @@
return (AE_NO_MEMORY);
}
+ state->common.data_type = ACPI_DESC_TYPE_STATE_RESULT;
acpi_ut_push_generic_state (&walk_state->results, state);
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Results=%p State=%p\n",
@@ -744,7 +745,7 @@
*
******************************************************************************/
-static void
+void
acpi_ds_push_walk_state (
acpi_walk_state *walk_state,
acpi_walk_list *walk_list)
@@ -855,12 +856,103 @@
/* Put the new state at the head of the walk list */
- acpi_ds_push_walk_state (walk_state, walk_list);
+ if (walk_list) {
+ acpi_ds_push_walk_state (walk_state, walk_list);
+ }
return_PTR (walk_state);
}
+#ifndef _ACPI_ASL_COMPILER
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ds_init_aml_walk
+ *
+ * PARAMETERS: Walk_state - New state to be initialized
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Initialize a walk state for a pass 1 or 2 parse tree walk
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ds_init_aml_walk (
+ acpi_walk_state *walk_state,
+ acpi_parse_object *op,
+ acpi_namespace_node *method_node,
+ u8 *aml_start,
+ u32 aml_length,
+ acpi_operand_object **params,
+ acpi_operand_object **return_obj_desc,
+ u32 pass_number)
+{
+ acpi_status status;
+ acpi_parse_state *parser_state = &walk_state->parser_state;
+
+
+ FUNCTION_TRACE ("Ds_init_aml_walk");
+
+
+ walk_state->parser_state.aml =
+ walk_state->parser_state.aml_start = aml_start;
+ walk_state->parser_state.aml_end =
+ walk_state->parser_state.pkg_end = aml_start + aml_length;
+
+ /* The Next_op of the Next_walk will be the beginning of the method */
+ /* TBD: [Restructure] -- obsolete? */
+
+ walk_state->next_op = NULL;
+ walk_state->params = params;
+ walk_state->caller_return_desc = return_obj_desc;
+
+ status = acpi_ps_init_scope (&walk_state->parser_state, op);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+
+ if (method_node) {
+ walk_state->parser_state.start_node = method_node;
+ walk_state->walk_type = WALK_METHOD;
+ walk_state->method_node = method_node;
+ walk_state->method_desc = acpi_ns_get_attached_object (method_node);
+
+
+ /* Push start scope on scope stack and make it current */
+
+ status = acpi_ds_scope_stack_push (method_node, ACPI_TYPE_METHOD, walk_state);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+
+ /* Init the method arguments */
+
+ acpi_ds_method_data_init_args (params, MTH_NUM_ARGS, walk_state);
+ }
+
+ else {
+ /* Setup the current scope */
+
+ parser_state->start_node = parser_state->start_op->node;
+ if (parser_state->start_node) {
+ /* Push start scope on scope stack and make it current */
+
+ status = acpi_ds_scope_stack_push (parser_state->start_node,
+ parser_state->start_node->type, walk_state);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+ }
+ }
+
+ acpi_ds_init_callbacks (walk_state, pass_number);
+
+ return_ACPI_STATUS (AE_OK);
+}
+#endif
+
+
/*******************************************************************************
*
* FUNCTION: Acpi_ds_delete_walk_state
@@ -893,7 +985,11 @@
}
- /* Always must free any linked control states */
+ if (walk_state->parser_state.scope) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%p walk still has a scope list\n", walk_state));
+ }
+
+ /* Always must free any linked control states */
while (walk_state->control_state) {
state = walk_state->control_state;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/driver.c linux/drivers/acpi/driver.c
--- v2.4.13/linux/drivers/acpi/driver.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/driver.c Wed Oct 24 14:06:22 2001
@@ -40,7 +40,6 @@
#include
#include
#include "acpi.h"
-#include "driver.h"
#define _COMPONENT OS_DEPENDENT
@@ -50,6 +49,70 @@
static int acpi_disabled = 0;
+enum acpi_blacklist_predicates
+{
+ all_versions,
+ less_than_or_equal,
+ equal,
+ greater_than_or_equal,
+};
+
+struct acpi_blacklist_item
+{
+ char oem_id[7];
+ char oem_table_id[9];
+ u32 oem_revision;
+ enum acpi_blacklist_predicates oem_revision_predicate;
+};
+
+/*
+ * Currently, this blacklists based on items in the FADT. We may want to
+ * expand this to using other ACPI tables in the future, too.
+ */
+static struct acpi_blacklist_item acpi_blacklist[] __initdata =
+{
+ {"TOSHIB", "750 ", 0x970814, less_than_or_equal}, /* Portege 7020, BIOS 8.10 */
+ {""}
+};
+
+int
+acpi_blacklisted(FADT_DESCRIPTOR *fadt)
+{
+ int i = 0;
+
+ while (acpi_blacklist[i].oem_id[0] != '\0')
+ {
+ if (strncmp(acpi_blacklist[i].oem_id, fadt->header.oem_id, 6)) {
+ i++;
+ continue;
+ }
+
+ if (strncmp(acpi_blacklist[i].oem_table_id, fadt->header.oem_table_id, 8)) {
+ i++;
+ continue;
+ }
+
+ if (acpi_blacklist[i].oem_revision_predicate == all_versions)
+ return TRUE;
+
+ if (acpi_blacklist[i].oem_revision_predicate == less_than_or_equal
+ && fadt->header.oem_revision <= acpi_blacklist[i].oem_revision)
+ return TRUE;
+
+ if (acpi_blacklist[i].oem_revision_predicate == greater_than_or_equal
+ && fadt->header.oem_revision >= acpi_blacklist[i].oem_revision)
+ return TRUE;
+
+ if (acpi_blacklist[i].oem_revision_predicate == equal
+ && fadt->header.oem_revision == acpi_blacklist[i].oem_revision)
+ return TRUE;
+
+ i++;
+ }
+
+ return FALSE;
+}
+
/*
* Start the interpreter
*/
@@ -64,7 +127,6 @@
return -ENODEV;
}
-
if (acpi_disabled) {
printk(KERN_NOTICE "ACPI: disabled by cmdline, exiting\n");
return -ENODEV;
@@ -89,6 +151,12 @@
if (!ACPI_SUCCESS(acpi_get_table(ACPI_TABLE_FADT, 1, &buffer))) {
printk(KERN_ERR "ACPI: Could not get FADT\n");
+ acpi_terminate();
+ return -ENODEV;
+ }
+
+ if (acpi_blacklisted(&acpi_fadt)) {
+ printk(KERN_ERR "ACPI: On blacklist -- BIOS not fully ACPI compliant\n");
acpi_terminate();
return -ENODEV;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/driver.h linux/drivers/acpi/driver.h
--- v2.4.13/linux/drivers/acpi/driver.h Tue Jul 3 17:08:19 2001
+++ linux/drivers/acpi/driver.h Wed Dec 31 16:00:00 1969
@@ -1,72 +0,0 @@
-/*
- * driver.h - ACPI driver
- *
- * Copyright (C) 2000 Andrew Henroid
- *
- * 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 __DRIVER_H
-#define __DRIVER_H
-
-#include
-#include
-#include
-#include
-#include
-
-#define ACPI_MAX_THROTTLE 10
-#define ACPI_INVALID ~0UL
-#define ACPI_INFINITE ~0UL
-
-/*
- * cpu.c
- */
-int acpi_cpu_init(void);
-u32 acpi_read_pm_timer(void);
-
-extern u32 acpi_c2_exit_latency;
-extern u32 acpi_c3_exit_latency;
-extern u32 acpi_c2_enter_latency;
-extern u32 acpi_c3_enter_latency;
-extern u32 acpi_use_idle;
-extern u32 acpi_c1_count;
-extern u32 acpi_c2_count;
-extern u32 acpi_c3_count;
-
-/*
- * driver.c
- */
-int acpi_run(void (*callback)(void*), void *context);
-
-/*
- * ec.c
- */
-int acpi_ec_init(void);
-
-/*
- * power.c
- */
-int acpi_power_init(void);
-
-/*
- * sys.c
- */
-int acpi_sys_init(void);
-int acpi_enter_sx(acpi_sstate_t state);
-
-extern volatile acpi_sstate_t acpi_sleep_state;
-
-#endif /* __DRIVER_H */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evevent.c linux/drivers/acpi/events/evevent.c
--- v2.4.13/linux/drivers/acpi/events/evevent.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evevent.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: evevent - Fixed and General Purpose Acpi_event
* handling and dispatch
- * $Revision: 50 $
+ * $Revision: 51 $
*
*****************************************************************************/
@@ -354,7 +354,7 @@
* Allocate the Gpe information block
*/
acpi_gbl_gpe_registers = ACPI_MEM_CALLOCATE (acpi_gbl_gpe_register_count *
- sizeof (ACPI_GPE_REGISTERS));
+ sizeof (acpi_gpe_registers));
if (!acpi_gbl_gpe_registers) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Could not allocate the Gpe_registers block\n"));
@@ -442,9 +442,9 @@
register_index++;
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE registers: %X@%p (Blk0) %X@%p (Blk1)\n",
- gpe0register_count, acpi_gbl_FADT->Xgpe0blk.address, gpe1_register_count,
- acpi_gbl_FADT->Xgpe1_blk.address));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE registers: %X@%8.8X%8.8X (Blk0) %X@%8.8X%8.8X (Blk1)\n",
+ gpe0register_count, HIDWORD(acpi_gbl_FADT->Xgpe0blk.address), LODWORD(acpi_gbl_FADT->Xgpe0blk.address),
+ gpe1_register_count, HIDWORD(acpi_gbl_FADT->Xgpe1_blk.address), LODWORD(acpi_gbl_FADT->Xgpe1_blk.address)));
return_ACPI_STATUS (AE_OK);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evmisc.c linux/drivers/acpi/events/evmisc.c
--- v2.4.13/linux/drivers/acpi/events/evmisc.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evmisc.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: evmisc - ACPI device notification handler dispatch
* and ACPI Global Lock support
- * $Revision: 33 $
+ * $Revision: 35 $
*
*****************************************************************************/
@@ -88,7 +88,7 @@
break;
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Unknown Notify Value: %lx \n", notify_value));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Unknown Notify Value: %X \n", notify_value));
break;
}
@@ -134,6 +134,7 @@
return (AE_NO_MEMORY);
}
+ notify_info->common.data_type = ACPI_DESC_TYPE_STATE_NOTIFY;
notify_info->notify.node = node;
notify_info->notify.value = (u16) notify_value;
notify_info->notify.handler_obj = handler_obj;
@@ -173,7 +174,7 @@
void *context)
{
acpi_generic_state *notify_info = (acpi_generic_state *) context;
- ACPI_NOTIFY_HANDLER global_handler = NULL;
+ acpi_notify_handler global_handler = NULL;
void *global_context = NULL;
acpi_operand_object *handler_obj;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evregion.c linux/drivers/acpi/events/evregion.c
--- v2.4.13/linux/drivers/acpi/events/evregion.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evregion.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evregion - ACPI Address_space (Op_region) handler dispatch
- * $Revision: 110 $
+ * $Revision: 113 $
*
*****************************************************************************/
@@ -147,17 +147,16 @@
params[1] = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
if (!params[1]) {
- acpi_ut_remove_reference (params[0]);
- return_ACPI_STATUS (AE_NO_MEMORY);
+ status = AE_NO_MEMORY;
+ goto cleanup;
}
- params[2] = NULL;
-
/*
* Set up the parameter objects
*/
params[0]->integer.value = region_obj->region.space_id;
params[1]->integer.value = function;
+ params[2] = NULL;
/*
* Execute the method, no return value
@@ -165,9 +164,10 @@
DEBUG_EXEC(acpi_ut_display_init_pathname (region_obj->region.extra->extra.method_REG, " [Method]"));
status = acpi_ns_evaluate_by_handle (region_obj->region.extra->extra.method_REG, params, NULL);
+ acpi_ut_remove_reference (params[1]);
+cleanup:
acpi_ut_remove_reference (params[0]);
- acpi_ut_remove_reference (params[1]);
return_ACPI_STATUS (status);
}
@@ -200,8 +200,8 @@
u32 *value)
{
acpi_status status;
- ACPI_ADR_SPACE_HANDLER handler;
- ACPI_ADR_SPACE_SETUP region_setup;
+ acpi_adr_space_handler handler;
+ acpi_adr_space_setup region_setup;
acpi_operand_object *handler_desc;
void *region_context = NULL;
@@ -276,7 +276,7 @@
handler = handler_desc->addr_handler.handler;
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
- "Addrhandler %p (%p), Address %8.8lX%8.8lX\n",
+ "Addrhandler %p (%p), Address %8.8X%8.8X\n",
®ion_obj->region.addr_handler->addr_handler, handler, HIDWORD(address),
LODWORD(address)));
@@ -335,7 +335,7 @@
acpi_operand_object *handler_obj;
acpi_operand_object *obj_desc;
acpi_operand_object **last_obj_ptr;
- ACPI_ADR_SPACE_SETUP region_setup;
+ acpi_adr_space_setup region_setup;
void *region_context;
acpi_status status;
@@ -548,7 +548,7 @@
/* Convert and validate the device handle */
- node = acpi_ns_convert_handle_to_entry (obj_handle);
+ node = acpi_ns_map_handle_to_node (obj_handle);
if (!node) {
return (AE_BAD_PARAMETER);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evrgnini.c linux/drivers/acpi/events/evrgnini.c
--- v2.4.13/linux/drivers/acpi/events/evrgnini.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evrgnini.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evrgnini- ACPI Address_space (Op_region) init
- * $Revision: 46 $
+ * $Revision: 48 $
*
*****************************************************************************/
@@ -145,7 +145,7 @@
acpi_operand_object *handler_obj;
acpi_namespace_node *node;
acpi_operand_object *region_obj = (acpi_operand_object *) handle;
- ACPI_DEVICE_ID object_hID;
+ acpi_device_id object_hID;
FUNCTION_TRACE ("Ev_pci_config_region_setup");
@@ -158,7 +158,7 @@
* routine checks before we get here, but we check again just in case.
*/
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
- "Attempting to init a region %X, with no handler\n", region_obj));
+ "Attempting to init a region %p, with no handler\n", region_obj));
return_ACPI_STATUS (AE_NOT_EXIST);
}
@@ -257,6 +257,70 @@
}
*region_context = pci_id;
+ return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ev_pci_bar_region_setup
+ *
+ * PARAMETERS: Region_obj - region we are interested in
+ * Function - start or stop
+ * Handler_context - Address space handler context
+ * Region_context - Region specific context
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Do any prep work for region handling
+ *
+ * MUTEX: Assumes namespace is not locked
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ev_pci_bar_region_setup (
+ acpi_handle handle,
+ u32 function,
+ void *handler_context,
+ void **region_context)
+{
+
+ FUNCTION_TRACE ("Ev_pci_bar_region_setup");
+
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ev_cmos_region_setup
+ *
+ * PARAMETERS: Region_obj - region we are interested in
+ * Function - start or stop
+ * Handler_context - Address space handler context
+ * Region_context - Region specific context
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Do any prep work for region handling
+ *
+ * MUTEX: Assumes namespace is not locked
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ev_cmos_region_setup (
+ acpi_handle handle,
+ u32 function,
+ void *handler_context,
+ void **region_context)
+{
+
+ FUNCTION_TRACE ("Ev_cmos_region_setup");
+
+
return_ACPI_STATUS (AE_OK);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evxface.c linux/drivers/acpi/events/evxface.c
--- v2.4.13/linux/drivers/acpi/events/evxface.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evxface.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evxface - External interfaces for ACPI events
- * $Revision: 112 $
+ * $Revision: 116 $
*
*****************************************************************************/
@@ -54,7 +54,7 @@
acpi_status
acpi_install_fixed_event_handler (
u32 event,
- ACPI_EVENT_HANDLER handler,
+ acpi_event_handler handler,
void *context)
{
acpi_status status;
@@ -63,13 +63,6 @@
FUNCTION_TRACE ("Acpi_install_fixed_event_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if (event > ACPI_EVENT_MAX) {
@@ -86,12 +79,12 @@
}
- /* Install the handler before enabling the event - just in case... */
+ /* Install the handler before enabling the event */
acpi_gbl_fixed_event_handlers[event].handler = handler;
acpi_gbl_fixed_event_handlers[event].context = context;
- status = acpi_enable_event (event, ACPI_EVENT_FIXED);
+ status = acpi_enable_event (event, ACPI_EVENT_FIXED, 0);
if (!ACPI_SUCCESS (status)) {
ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Could not enable fixed event.\n"));
@@ -129,7 +122,7 @@
acpi_status
acpi_remove_fixed_event_handler (
u32 event,
- ACPI_EVENT_HANDLER handler)
+ acpi_event_handler handler)
{
acpi_status status = AE_OK;
@@ -137,13 +130,6 @@
FUNCTION_TRACE ("Acpi_remove_fixed_event_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if (event > ACPI_EVENT_MAX) {
@@ -152,21 +138,19 @@
acpi_ut_acquire_mutex (ACPI_MTX_EVENTS);
- /* Disable the event before removing the handler - just in case... */
+ /* Disable the event before removing the handler */
- status = acpi_disable_event(event, ACPI_EVENT_FIXED);
+ status = acpi_disable_event(event, ACPI_EVENT_FIXED, 0);
/* Always Remove the handler */
acpi_gbl_fixed_event_handlers[event].handler = NULL;
acpi_gbl_fixed_event_handlers[event].context = NULL;
-
- if (!ACPI_SUCCESS(status)) {
+ if (!ACPI_SUCCESS (status)) {
ACPI_DEBUG_PRINT ((ACPI_DB_WARN,
"Could not write to fixed event enable register.\n"));
}
-
else {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event %X.\n", event));
}
@@ -197,7 +181,7 @@
acpi_install_notify_handler (
acpi_handle device,
u32 handler_type,
- ACPI_NOTIFY_HANDLER handler,
+ acpi_notify_handler handler,
void *context)
{
acpi_operand_object *obj_desc;
@@ -209,13 +193,6 @@
FUNCTION_TRACE ("Acpi_install_notify_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if ((!handler) ||
@@ -227,7 +204,7 @@
/* Convert and validate the device handle */
- device_node = acpi_ns_convert_handle_to_entry (device);
+ device_node = acpi_ns_map_handle_to_node (device);
if (!device_node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -235,7 +212,6 @@
/*
* Root Object:
- * ------------
* Registering a notify handler on the root object indicates that the
* caller wishes to receive notifications for all objects. Note that
* only one global handler can be regsitered (per notify type).
@@ -266,8 +242,7 @@
}
/*
- * Other Objects:
- * --------------
+ * All Other Objects:
* Caller will only receive notifications specific to the target object.
* Note that only certain object types can receive notifications.
*/
@@ -338,6 +313,7 @@
}
}
+
unlock_and_exit:
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return_ACPI_STATUS (status);
@@ -363,7 +339,7 @@
acpi_remove_notify_handler (
acpi_handle device,
u32 handler_type,
- ACPI_NOTIFY_HANDLER handler)
+ acpi_notify_handler handler)
{
acpi_operand_object *notify_obj;
acpi_operand_object *obj_desc;
@@ -374,13 +350,6 @@
FUNCTION_TRACE ("Acpi_remove_notify_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if ((!handler) ||
@@ -392,18 +361,16 @@
/* Convert and validate the device handle */
- device_node = acpi_ns_convert_handle_to_entry (device);
+ device_node = acpi_ns_map_handle_to_node (device);
if (!device_node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
}
/*
- * Root Object:
- * ------------
+ * Root Object
*/
if (device == ACPI_ROOT_OBJECT) {
-
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing notify handler for ROOT object.\n"));
if (((handler_type == ACPI_SYSTEM_NOTIFY) &&
@@ -415,20 +382,19 @@
}
if (handler_type == ACPI_SYSTEM_NOTIFY) {
- acpi_gbl_sys_notify.node = NULL;
+ acpi_gbl_sys_notify.node = NULL;
acpi_gbl_sys_notify.handler = NULL;
acpi_gbl_sys_notify.context = NULL;
}
else {
- acpi_gbl_drv_notify.node = NULL;
+ acpi_gbl_drv_notify.node = NULL;
acpi_gbl_drv_notify.handler = NULL;
acpi_gbl_drv_notify.context = NULL;
}
}
/*
- * Other Objects:
- * --------------
+ * All Other Objects
*/
else {
/*
@@ -505,7 +471,7 @@
acpi_install_gpe_handler (
u32 gpe_number,
u32 type,
- ACPI_GPE_HANDLER handler,
+ acpi_gpe_handler handler,
void *context)
{
acpi_status status = AE_OK;
@@ -514,13 +480,6 @@
FUNCTION_TRACE ("Acpi_install_gpe_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if (!handler || (gpe_number > ACPI_GPE_MAX)) {
@@ -553,6 +512,7 @@
acpi_hw_clear_gpe (gpe_number);
acpi_hw_enable_gpe (gpe_number);
+
cleanup:
acpi_ut_release_mutex (ACPI_MTX_EVENTS);
return_ACPI_STATUS (status);
@@ -575,7 +535,7 @@
acpi_status
acpi_remove_gpe_handler (
u32 gpe_number,
- ACPI_GPE_HANDLER handler)
+ acpi_gpe_handler handler)
{
acpi_status status = AE_OK;
@@ -583,13 +543,6 @@
FUNCTION_TRACE ("Acpi_remove_gpe_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if (!handler || (gpe_number > ACPI_GPE_MAX)) {
@@ -621,6 +574,7 @@
acpi_gbl_gpe_info[gpe_number].handler = NULL;
acpi_gbl_gpe_info[gpe_number].context = NULL;
+
cleanup:
acpi_ut_release_mutex (ACPI_MTX_EVENTS);
return_ACPI_STATUS (status);
@@ -639,6 +593,7 @@
* DESCRIPTION: Acquire the ACPI Global Lock
*
******************************************************************************/
+
acpi_status
acpi_acquire_global_lock (
void)
@@ -646,13 +601,6 @@
acpi_status status;
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
status = acpi_ex_enter_interpreter ();
if (ACPI_FAILURE (status)) {
return (status);
@@ -685,15 +633,6 @@
acpi_release_global_lock (
void)
{
- acpi_status status;
-
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
acpi_ev_release_global_lock ();
return (AE_OK);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evxfevnt.c linux/drivers/acpi/events/evxfevnt.c
--- v2.4.13/linux/drivers/acpi/events/evxfevnt.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evxfevnt.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evxfevnt - External Interfaces, ACPI event disable/enable
- * $Revision: 36 $
+ * $Revision: 38 $
*
*****************************************************************************/
@@ -106,13 +106,6 @@
FUNCTION_TRACE ("Acpi_disable");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Restore original mode */
status = acpi_hw_set_mode (acpi_gbl_original_mode);
@@ -136,6 +129,7 @@
*
* PARAMETERS: Event - The fixed event or GPE to be enabled
* Type - The type of event
+ * Flags - Just enable, or also wake enable?
*
* RETURN: Status
*
@@ -146,7 +140,8 @@
acpi_status
acpi_enable_event (
u32 event,
- u32 type)
+ u32 type,
+ u32 flags)
{
acpi_status status = AE_OK;
u32 register_id;
@@ -155,13 +150,6 @@
FUNCTION_TRACE ("Acpi_enable_event");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* The Type must be either Fixed Acpi_event or GPE */
switch (type) {
@@ -223,7 +211,13 @@
/* Enable the requested GPE number */
- acpi_hw_enable_gpe (event);
+ if (flags & ACPI_EVENT_ENABLE) {
+ acpi_hw_enable_gpe (event);
+ }
+ if (flags & ACPI_EVENT_WAKE_ENABLE) {
+ acpi_hw_enable_gpe_for_wakeup (event);
+ }
+
break;
@@ -242,7 +236,8 @@
* FUNCTION: Acpi_disable_event
*
* PARAMETERS: Event - The fixed event or GPE to be enabled
- * Type - The type of event
+ * Type - The type of event, fixed or general purpose
+ * Flags - Wake disable vs. non-wake disable
*
* RETURN: Status
*
@@ -253,7 +248,8 @@
acpi_status
acpi_disable_event (
u32 event,
- u32 type)
+ u32 type,
+ u32 flags)
{
acpi_status status = AE_OK;
u32 register_id;
@@ -262,13 +258,6 @@
FUNCTION_TRACE ("Acpi_disable_event");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* The Type must be either Fixed Acpi_event or GPE */
switch (type) {
@@ -329,7 +318,13 @@
/* Disable the requested GPE number */
- acpi_hw_disable_gpe (event);
+ if (flags & ACPI_EVENT_DISABLE) {
+ acpi_hw_disable_gpe (event);
+ }
+ if (flags & ACPI_EVENT_WAKE_DISABLE) {
+ acpi_hw_disable_gpe_for_wakeup (event);
+ }
+
break;
@@ -366,13 +361,6 @@
FUNCTION_TRACE ("Acpi_clear_event");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* The Type must be either Fixed Acpi_event or GPE */
switch (type) {
@@ -466,13 +454,6 @@
FUNCTION_TRACE ("Acpi_get_event_status");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
if (!event_status) {
return_ACPI_STATUS (AE_BAD_PARAMETER);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/events/evxfregn.c linux/drivers/acpi/events/evxfregn.c
--- v2.4.13/linux/drivers/acpi/events/evxfregn.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/events/evxfregn.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: evxfregn - External Interfaces, ACPI Operation Regions and
* Address Spaces.
- * $Revision: 36 $
+ * $Revision: 40 $
*
*****************************************************************************/
@@ -56,8 +56,8 @@
acpi_install_address_space_handler (
acpi_handle device,
ACPI_ADR_SPACE_TYPE space_id,
- ACPI_ADR_SPACE_HANDLER handler,
- ACPI_ADR_SPACE_SETUP setup,
+ acpi_adr_space_handler handler,
+ acpi_adr_space_setup setup,
void *context)
{
acpi_operand_object *obj_desc;
@@ -71,13 +71,6 @@
FUNCTION_TRACE ("Acpi_install_address_space_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if ((!device) ||
@@ -90,16 +83,16 @@
/* Convert and validate the device handle */
- node = acpi_ns_convert_handle_to_entry (device);
+ node = acpi_ns_map_handle_to_node (device);
if (!node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
}
/*
- * This registration is valid for only the types below
- * and the root. This is where the default handlers
- * get placed.
+ * This registration is valid for only the types below
+ * and the root. This is where the default handlers
+ * get placed.
*/
if ((node->type != ACPI_TYPE_DEVICE) &&
(node->type != ACPI_TYPE_PROCESSOR) &&
@@ -115,17 +108,27 @@
switch (space_id) {
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
handler = acpi_ex_system_memory_space_handler;
- setup = acpi_ev_system_memory_region_setup;
+ setup = acpi_ev_system_memory_region_setup;
break;
case ACPI_ADR_SPACE_SYSTEM_IO:
handler = acpi_ex_system_io_space_handler;
- setup = acpi_ev_io_space_region_setup;
+ setup = acpi_ev_io_space_region_setup;
break;
case ACPI_ADR_SPACE_PCI_CONFIG:
handler = acpi_ex_pci_config_space_handler;
- setup = acpi_ev_pci_config_region_setup;
+ setup = acpi_ev_pci_config_region_setup;
+ break;
+
+ case ACPI_ADR_SPACE_CMOS:
+ handler = acpi_ex_cmos_space_handler;
+ setup = acpi_ev_cmos_region_setup;
+ break;
+
+ case ACPI_ADR_SPACE_PCI_BAR_TARGET:
+ handler = acpi_ex_pci_bar_space_handler;
+ setup = acpi_ev_pci_bar_region_setup;
break;
default:
@@ -136,20 +139,20 @@
}
/*
- * If the caller hasn't specified a setup routine, use the default
+ * If the caller hasn't specified a setup routine, use the default
*/
if (!setup) {
setup = acpi_ev_default_region_setup;
}
/*
- * Check for an existing internal object
+ * Check for an existing internal object
*/
obj_desc = acpi_ns_get_attached_object (node);
if (obj_desc) {
/*
- * The object exists.
- * Make sure the handler is not already installed.
+ * The object exists.
+ * Make sure the handler is not already installed.
*/
/* check the address handler the user requested */
@@ -157,8 +160,8 @@
handler_obj = obj_desc->device.addr_handler;
while (handler_obj) {
/*
- * We have an Address handler, see if user requested this
- * address space.
+ * We have an Address handler, see if user requested this
+ * address space.
*/
if(handler_obj->addr_handler.space_id == space_id) {
status = AE_EXIST;
@@ -166,7 +169,7 @@
}
/*
- * Move through the linked list of handlers
+ * Move through the linked list of handlers
*/
handler_obj = handler_obj->addr_handler.next;
}
@@ -181,7 +184,6 @@
if (node->type == ACPI_TYPE_ANY) {
type = ACPI_TYPE_DEVICE;
}
-
else {
type = node->type;
}
@@ -210,11 +212,11 @@
acpi_ut_get_region_name (space_id), space_id, node, obj_desc));
/*
- * Now we can install the handler
+ * Now we can install the handler
*
- * At this point we know that there is no existing handler.
- * So, we just allocate the object for the handler and link it
- * into the list.
+ * At this point we know that there is no existing handler.
+ * So, we just allocate the object for the handler and link it
+ * into the list.
*/
handler_obj = acpi_ut_create_internal_object (INTERNAL_TYPE_ADDRESS_HANDLER);
if (!handler_obj) {
@@ -232,16 +234,16 @@
handler_obj->addr_handler.setup = setup;
/*
- * Now walk the namespace finding all of the regions this
- * handler will manage.
+ * Now walk the namespace finding all of the regions this
+ * handler will manage.
*
- * We start at the device and search the branch toward
- * the leaf nodes until either the leaf is encountered or
- * a device is detected that has an address handler of the
- * same type.
+ * We start at the device and search the branch toward
+ * the leaf nodes until either the leaf is encountered or
+ * a device is detected that has an address handler of the
+ * same type.
*
- * In either case we back up and search down the remainder
- * of the branch
+ * In either case we back up and search down the remainder
+ * of the branch
*/
status = acpi_ns_walk_namespace (ACPI_TYPE_ANY, device,
ACPI_UINT32_MAX, NS_WALK_UNLOCK,
@@ -249,7 +251,7 @@
handler_obj, NULL);
/*
- * Place this handler 1st on the list
+ * Place this handler 1st on the list
*/
handler_obj->common.reference_count =
(u16) (handler_obj->common.reference_count +
@@ -280,7 +282,7 @@
acpi_remove_address_space_handler (
acpi_handle device,
ACPI_ADR_SPACE_TYPE space_id,
- ACPI_ADR_SPACE_HANDLER handler)
+ acpi_adr_space_handler handler)
{
acpi_operand_object *obj_desc;
acpi_operand_object *handler_obj;
@@ -293,13 +295,6 @@
FUNCTION_TRACE ("Acpi_remove_address_space_handler");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if ((!device) ||
@@ -312,7 +307,7 @@
/* Convert and validate the device handle */
- node = acpi_ns_convert_handle_to_entry (device);
+ node = acpi_ns_map_handle_to_node (device);
if (!node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -323,25 +318,22 @@
obj_desc = acpi_ns_get_attached_object (node);
if (!obj_desc) {
- /*
- * The object DNE.
- */
status = AE_NOT_EXIST;
goto unlock_and_exit;
}
/*
- * find the address handler the user requested
+ * find the address handler the user requested
*/
handler_obj = obj_desc->device.addr_handler;
last_obj_ptr = &obj_desc->device.addr_handler;
while (handler_obj) {
/*
- * We have a handler, see if user requested this one
+ * We have a handler, see if user requested this one
*/
- if(handler_obj->addr_handler.space_id == space_id) {
+ if (handler_obj->addr_handler.space_id == space_id) {
/*
- * Got it, first dereference this in the Regions
+ * Got it, first dereference this in the Regions
*/
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
"Removing address handler %p(%p) for region %s on Device %p(%p)\n",
@@ -354,30 +346,30 @@
while (region_obj) {
/*
- * First disassociate the handler from the region.
+ * First disassociate the handler from the region.
*
- * NOTE: this doesn't mean that the region goes away
- * The region is just inaccessible as indicated to
- * the _REG method
+ * NOTE: this doesn't mean that the region goes away
+ * The region is just inaccessible as indicated to
+ * the _REG method
*/
acpi_ev_disassociate_region_from_handler(region_obj, TRUE);
/*
- * Walk the list, since we took the first region and it
- * was removed from the list by the dissassociate call
- * we just get the first item on the list again
+ * Walk the list, since we took the first region and it
+ * was removed from the list by the dissassociate call
+ * we just get the first item on the list again
*/
region_obj = handler_obj->addr_handler.region_list;
}
/*
- * Remove this Handler object from the list
+ * Remove this Handler object from the list
*/
*last_obj_ptr = handler_obj->addr_handler.next;
/*
- * Now we can delete the handler object
+ * Now we can delete the handler object
*/
acpi_ut_remove_reference (handler_obj);
acpi_ut_remove_reference (handler_obj);
@@ -386,7 +378,7 @@
}
/*
- * Move through the linked list of handlers
+ * Move through the linked list of handlers
*/
last_obj_ptr = &handler_obj->addr_handler.next;
handler_obj = handler_obj->addr_handler.next;
@@ -394,7 +386,7 @@
/*
- * The handler does not exist
+ * The handler does not exist
*/
ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION,
"Unable to remove address handler %p for %s(%X), Dev_node %p, obj %p\n",
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exconfig.c linux/drivers/acpi/executer/exconfig.c
--- v2.4.13/linux/drivers/acpi/executer/exconfig.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exconfig.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
- * $Revision: 41 $
+ * $Revision: 44 $
*
*****************************************************************************/
@@ -51,10 +51,10 @@
*
****************************************************************************/
-static acpi_status
-acpi_ex_load_table_op (
+acpi_status
+acpi_ex_load_op (
acpi_operand_object *rgn_desc,
- acpi_operand_object **ddb_handle)
+ acpi_operand_object *ddb_handle)
{
acpi_status status;
acpi_operand_object *table_desc = NULL;
@@ -65,7 +65,7 @@
u32 i;
- FUNCTION_TRACE ("Ex_load_table");
+ FUNCTION_TRACE ("Ex_load_op");
/* TBD: [Unhandled] Object can be either a field or an opregion */
@@ -117,7 +117,7 @@
acpi_gbl_acpi_table_data[ACPI_TABLE_SSDT].sig_length))) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Table has invalid signature [%4.4s], must be SSDT or PSDT\n",
- table_header.signature));
+ (char*)table_header.signature));
status = AE_BAD_SIGNATURE;
goto cleanup;
}
@@ -165,7 +165,8 @@
table_desc->reference.opcode = AML_LOAD_OP;
table_desc->reference.object = table_info.installed_desc;
- *ddb_handle = table_desc;
+ /* TBD: store the tabledesc into the Ddb_handle target */
+ /* Ddb_handle = Table_desc; */
return_ACPI_STATUS (status);
@@ -175,7 +176,6 @@
ACPI_MEM_FREE (table_desc);
ACPI_MEM_FREE (table_ptr);
return_ACPI_STATUS (status);
-
}
@@ -191,7 +191,7 @@
*
****************************************************************************/
-static acpi_status
+acpi_status
acpi_ex_unload_table (
acpi_operand_object *ddb_handle)
{
@@ -236,60 +236,6 @@
/* Delete the table descriptor (Ddb_handle) */
acpi_ut_remove_reference (table_desc);
-
- return_ACPI_STATUS (status);
-}
-
-
-/*****************************************************************************
- *
- * FUNCTION: Acpi_ex_reconfiguration
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current state of the parse tree walk
- *
- * RETURN: Status
- *
- * DESCRIPTION: Reconfiguration opcodes such as LOAD and UNLOAD
- *
- ****************************************************************************/
-
-acpi_status
-acpi_ex_reconfiguration (
- u16 opcode,
- acpi_walk_state *walk_state)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_status status;
-
-
- FUNCTION_TRACE ("Ex_reconfiguration");
-
-#define ddb_handle operand[0]
-#define region_desc operand[1]
-
-
- switch (opcode) {
-
- case AML_LOAD_OP:
-
- status = acpi_ex_load_table_op (region_desc, &ddb_handle);
- break;
-
-
- case AML_UNLOAD_OP:
-
- status = acpi_ex_unload_table (ddb_handle);
- break;
-
-
- default:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "bad opcode=%X\n", opcode));
- status = AE_AML_BAD_OPCODE;
- break;
- }
-
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exconvrt.c linux/drivers/acpi/executer/exconvrt.c
--- v2.4.13/linux/drivers/acpi/executer/exconvrt.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exconvrt.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exconvrt - Object conversion routines
- * $Revision: 22 $
+ * $Revision: 24 $
*
*****************************************************************************/
@@ -230,7 +230,7 @@
new_buf = ACPI_MEM_CALLOCATE (integer_size);
if (!new_buf) {
REPORT_ERROR
- (("Ex_dyadic2_r/Concat_op: Buffer allocation failure\n"));
+ (("Ex_convert_to_buffer: Buffer allocation failure\n"));
acpi_ut_remove_reference (ret_desc);
return (AE_NO_MEMORY);
}
@@ -296,8 +296,9 @@
u32 k = 0;
u8 hex_digit;
acpi_integer digit;
- u8 leading_zero = TRUE;
+ u32 remainder;
u32 length = sizeof (acpi_integer);
+ u8 leading_zero = TRUE;
FUNCTION_ENTRY ();
@@ -306,12 +307,13 @@
switch (base) {
case 10:
+ remainder = 0;
for (i = ACPI_MAX_DECIMAL_DIGITS; i > 0 ; i--) {
/* Divide by nth factor of 10 */
digit = integer;
for (j = 1; j < i; j++) {
- digit = ACPI_DIVIDE (digit, 10);
+ acpi_ut_short_divide (&digit, 10, &digit, &remainder);
}
/* Create the decimal digit */
@@ -321,7 +323,7 @@
}
if (!leading_zero) {
- string[k] = (u8) (ASCII_ZERO + ACPI_MODULO (digit, 10));
+ string[k] = (u8) (ASCII_ZERO + remainder);
k++;
}
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/excreate.c linux/drivers/acpi/executer/excreate.c
--- v2.4.13/linux/drivers/acpi/executer/excreate.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/excreate.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: excreate - Named object creation
- * $Revision: 66 $
+ * $Revision: 71 $
*
*****************************************************************************/
@@ -37,162 +37,6 @@
MODULE_NAME ("excreate")
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_create_buffer_field
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Operands - List of operands for the opcode
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Create_field operators: Create_bit_field_op,
- * Create_byte_field_op, Create_word_field_op, Create_dWord_field_op,
- * Create_field_op (which define fields in buffers)
- *
- * ALLOCATION: Deletes Create_field_op's count operand descriptor
- *
- *
- * ACPI SPECIFICATION REFERENCES:
- * Def_create_bit_field := Create_bit_field_op Src_buf Bit_idx Name_string
- * Def_create_byte_field := Create_byte_field_op Src_buf Byte_idx Name_string
- * Def_create_dWord_field := Create_dWord_field_op Src_buf Byte_idx Name_string
- * Def_create_field := Create_field_op Src_buf Bit_idx Num_bits Name_string
- * Def_create_word_field := Create_word_field_op Src_buf Byte_idx Name_string
- * Bit_index := Term_arg=>Integer
- * Byte_index := Term_arg=>Integer
- * Num_bits := Term_arg=>Integer
- * Source_buff := Term_arg=>Buffer
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_create_buffer_field (
- u8 *aml_ptr,
- u32 aml_length,
- acpi_namespace_node *node,
- acpi_walk_state *walk_state)
-{
- acpi_status status;
- acpi_operand_object *obj_desc;
- acpi_operand_object *tmp_desc;
-
-
- FUNCTION_TRACE ("Ex_create_buffer_field");
-
-
- /* Create the descriptor */
-
- obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER_FIELD);
- if (!obj_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
-
- /*
- * Allocate a method object for this field unit
- */
- obj_desc->buffer_field.extra = acpi_ut_create_internal_object (
- INTERNAL_TYPE_EXTRA);
- if (!obj_desc->buffer_field.extra) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- /*
- * Remember location in AML stream of the field unit
- * opcode and operands -- since the buffer and index
- * operands must be evaluated.
- */
- obj_desc->buffer_field.extra->extra.pcode = aml_ptr;
- obj_desc->buffer_field.extra->extra.pcode_length = aml_length;
- obj_desc->buffer_field.node = node;
-
-
- /*
- * This operation is supposed to cause the destination Name to refer
- * to the defined Buffer_field -- it must not store the constructed
- * Buffer_field object (or its current value) in some location that the
- * Name may already be pointing to. So, if the Name currently contains
- * a reference which would cause Acpi_ex_store() to perform an indirect
- * store rather than setting the value of the Name itself, clobber that
- * reference before calling Acpi_ex_store().
- */
-
- /* Type of Name's existing value */
-
- switch (acpi_ns_get_type (node)) {
-
- case ACPI_TYPE_BUFFER_FIELD:
- case INTERNAL_TYPE_ALIAS:
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
-
- tmp_desc = acpi_ns_get_attached_object (node);
- if (tmp_desc) {
- /*
- * There is an existing object here; delete it and zero out the
- * object field within the Node
- */
- DUMP_PATHNAME (node,
- "Ex_create_buffer_field: Removing Current Reference",
- ACPI_LV_BFIELD, _COMPONENT);
-
- DUMP_ENTRY (node, ACPI_LV_BFIELD);
- DUMP_STACK_ENTRY (tmp_desc);
-
- acpi_ut_remove_reference (tmp_desc);
- acpi_ns_attach_object ((acpi_namespace_node *) node, NULL,
- ACPI_TYPE_ANY);
- }
-
- /* Set the type to ANY (or the store below will fail) */
-
- ((acpi_namespace_node *) node)->type = ACPI_TYPE_ANY;
-
- break;
-
-
- default:
-
- break;
- }
-
-
- /* Store constructed field descriptor in result location */
-
- status = acpi_ex_store (obj_desc, (acpi_operand_object *) node,
- walk_state);
-
- /*
- * If the field descriptor was not physically stored (or if a failure
- * above), we must delete it
- */
- if (obj_desc->common.reference_count <= 1) {
- acpi_ut_remove_reference (obj_desc);
- }
-
-
- return_ACPI_STATUS (AE_OK);
-
-
-cleanup:
-
- /* Delete region object and method subobject */
-
- if (obj_desc) {
- /* Remove deletes both objects! */
-
- acpi_ut_remove_reference (obj_desc);
- obj_desc = NULL;
- }
-
- return_ACPI_STATUS (status);
-}
-
-
/*****************************************************************************
*
* FUNCTION: Acpi_ex_create_alias
@@ -211,7 +55,6 @@
acpi_walk_state *walk_state)
{
acpi_namespace_node *source_node;
- acpi_namespace_node *alias_node;
acpi_status status;
@@ -220,29 +63,19 @@
/* Get the source/alias operands (both namespace nodes) */
- source_node = (acpi_namespace_node *) walk_state->operands[walk_state->num_operands -1];
- walk_state->num_operands--;
-
- /*
- * Don't pop it, it gets removed in the calling routine
- */
- alias_node = acpi_ds_obj_stack_get_value (0, walk_state);
+ source_node = (acpi_namespace_node *) walk_state->operands[1];
- /* Add an additional reference to the object */
- acpi_ut_add_reference (source_node->object);
+ /* Attach the original source object to the new Alias Node */
- /*
- * Attach the original source Node to the new Alias Node.
- */
- status = acpi_ns_attach_object (alias_node, source_node->object,
+ status = acpi_ns_attach_object ((acpi_namespace_node *) walk_state->operands[0],
+ source_node->object,
source_node->type);
-
/*
* The new alias assumes the type of the source, but it points
- * to the same object. The reference count of the object has two
- * additional references to prevent deletion out from under either the
+ * to the same object. The reference count of the object has an
+ * additional reference to prevent deletion out from under either the
* source or the alias Node
*/
@@ -256,7 +89,7 @@
*
* FUNCTION: Acpi_ex_create_event
*
- * PARAMETERS: None
+ * PARAMETERS: Walk_state - Current state
*
* RETURN: Status
*
@@ -288,23 +121,20 @@
status = acpi_os_create_semaphore (ACPI_NO_UNIT_LIMIT, 1,
&obj_desc->event.semaphore);
if (ACPI_FAILURE (status)) {
- acpi_ut_remove_reference (obj_desc);
goto cleanup;
}
/* Attach object to the Node */
- status = acpi_ns_attach_object (acpi_ds_obj_stack_get_value (0, walk_state),
+ status = acpi_ns_attach_object ((acpi_namespace_node *) walk_state->operands[0],
obj_desc, (u8) ACPI_TYPE_EVENT);
- if (ACPI_FAILURE (status)) {
- acpi_os_delete_semaphore (obj_desc->event.semaphore);
- acpi_ut_remove_reference (obj_desc);
- goto cleanup;
- }
-
cleanup:
-
+ /*
+ * Remove local reference to the object (on error, will cause deletion
+ * of both object and semaphore if present.)
+ */
+ acpi_ut_remove_reference (obj_desc);
return_ACPI_STATUS (status);
}
@@ -313,13 +143,14 @@
*
* FUNCTION: Acpi_ex_create_mutex
*
- * PARAMETERS: Interpreter_mode - Current running mode (load1/Load2/Exec)
- * Operands - List of operands for the opcode
+ * PARAMETERS: Walk_state - Current state
*
* RETURN: Status
*
* DESCRIPTION: Create a new mutex object
*
+ * Mutex (Name[0], Sync_level[1])
+ *
****************************************************************************/
acpi_status
@@ -327,19 +158,13 @@
acpi_walk_state *walk_state)
{
acpi_status status = AE_OK;
- acpi_operand_object *sync_desc;
acpi_operand_object *obj_desc;
FUNCTION_TRACE_PTR ("Ex_create_mutex", WALK_OPERANDS);
- /* Get the operand */
-
- sync_desc = walk_state->operands[walk_state->num_operands -1];
- walk_state->num_operands--;
-
- /* Attempt to allocate a new object */
+ /* Create the new mutex object */
obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_MUTEX);
if (!obj_desc) {
@@ -351,29 +176,23 @@
status = acpi_os_create_semaphore (1, 1, &obj_desc->mutex.semaphore);
if (ACPI_FAILURE (status)) {
- acpi_ut_remove_reference (obj_desc);
goto cleanup;
}
- obj_desc->mutex.sync_level = (u8) sync_desc->integer.value;
+ /* Init object and attach to NS node */
- /* Obj_desc was on the stack top, and the name is below it */
+ obj_desc->mutex.sync_level = (u8) walk_state->operands[1]->integer.value;
- status = acpi_ns_attach_object (acpi_ds_obj_stack_get_value (0, walk_state),
+ status = acpi_ns_attach_object ((acpi_namespace_node *) walk_state->operands[0],
obj_desc, (u8) ACPI_TYPE_MUTEX);
- if (ACPI_FAILURE (status)) {
- acpi_os_delete_semaphore (obj_desc->mutex.semaphore);
- acpi_ut_remove_reference (obj_desc);
- goto cleanup;
- }
cleanup:
-
- /* Always delete the operand */
-
- acpi_ut_remove_reference (sync_desc);
-
+ /*
+ * Remove local reference to the object (on error, will cause deletion
+ * of both object and semaphore if present.)
+ */
+ acpi_ut_remove_reference (obj_desc);
return_ACPI_STATUS (status);
}
@@ -382,10 +201,10 @@
*
* FUNCTION: Acpi_ex_create_region
*
- * PARAMETERS: Aml_ptr - Pointer to the region declaration AML
+ * PARAMETERS: Aml_start - Pointer to the region declaration AML
* Aml_length - Max length of the declaration AML
* Operands - List of operands for the opcode
- * Interpreter_mode - Load1/Load2/Execute
+ * Walk_state - Current state
*
* RETURN: Status
*
@@ -395,7 +214,7 @@
acpi_status
acpi_ex_create_region (
- u8 *aml_ptr,
+ u8 *aml_start,
u32 aml_length,
u8 region_space,
acpi_walk_state *walk_state)
@@ -408,6 +227,18 @@
FUNCTION_TRACE ("Ex_create_region");
+ /* Get the Node from the object stack */
+
+ node = (acpi_namespace_node *) walk_state->operands[0];
+
+ /*
+ * If the region object is already attached to this node,
+ * just return
+ */
+ if (node->object) {
+ return_ACPI_STATUS (AE_OK);
+ }
+
/*
* Space ID must be one of the predefined IDs, or in the user-defined
* range
@@ -422,10 +253,6 @@
acpi_ut_get_region_name (region_space), region_space));
- /* Get the Node from the object stack */
-
- node = (acpi_namespace_node *) acpi_ds_obj_stack_get_value (0, walk_state);
-
/* Create the region descriptor */
obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_REGION);
@@ -434,9 +261,8 @@
goto cleanup;
}
- /*
- * Allocate a method object for this region.
- */
+ /* Allocate a method object for this region */
+
obj_desc->region.extra = acpi_ut_create_internal_object (
INTERNAL_TYPE_EXTRA);
if (!obj_desc->region.extra) {
@@ -448,23 +274,20 @@
* Remember location in AML stream of address & length
* operands since they need to be evaluated at run time.
*/
- obj_desc->region.extra->extra.pcode = aml_ptr;
- obj_desc->region.extra->extra.pcode_length = aml_length;
+ obj_desc->region.extra->extra.aml_start = aml_start;
+ obj_desc->region.extra->extra.aml_length = aml_length;
/* Init the region from the operands */
- obj_desc->region.space_id = region_space;
- obj_desc->region.address = 0;
- obj_desc->region.length = 0;
-
+ obj_desc->region.space_id = region_space;
+ obj_desc->region.address = 0;
+ obj_desc->region.length = 0;
+ obj_desc->region.node = node;
/* Install the new region object in the parent Node */
- obj_desc->region.node = node;
-
status = acpi_ns_attach_object (node, obj_desc,
(u8) ACPI_TYPE_REGION);
-
if (ACPI_FAILURE (status)) {
goto cleanup;
}
@@ -474,7 +297,6 @@
* Namespace is NOT locked at this point.
*/
status = acpi_ev_initialize_region (obj_desc, FALSE);
-
if (ACPI_FAILURE (status)) {
/*
* If AE_NOT_EXIST is returned, it is not fatal
@@ -488,17 +310,48 @@
cleanup:
- if (ACPI_FAILURE (status)) {
- /* Delete region object and method subobject */
+ /* Remove local reference to the object */
- if (obj_desc) {
- /* Remove deletes both objects! */
+ acpi_ut_remove_reference (obj_desc);
- acpi_ut_remove_reference (obj_desc);
- obj_desc = NULL;
- }
+ return_ACPI_STATUS (status);
+}
+
+
+/*****************************************************************************
+ *
+ * FUNCTION: Acpi_ex_create_table_region
+ *
+ * PARAMETERS: Walk_state - Current state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Create a new Data_table_region object
+ *
+ ****************************************************************************/
+
+acpi_status
+acpi_ex_create_table_region (
+ acpi_walk_state *walk_state)
+{
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE ("Ex_create_table_region");
+
+/*
+ acpi_operand_object *Obj_desc;
+ Obj_desc = Acpi_ut_create_internal_object (ACPI_TYPE_REGION);
+ if (!Obj_desc)
+ {
+ Status = AE_NO_MEMORY;
+ goto Cleanup;
}
+
+Cleanup:
+*/
+
return_ACPI_STATUS (status);
}
@@ -515,68 +368,46 @@
*
* DESCRIPTION: Create a new processor object and populate the fields
*
+ * Processor (Name[0], Cpu_iD[1], Pblock_addr[2], Pblock_length[3])
+ *
****************************************************************************/
acpi_status
acpi_ex_create_processor (
- acpi_parse_object *op,
- acpi_namespace_node *processor_node)
+ acpi_walk_state *walk_state)
{
- acpi_status status;
- acpi_parse_object *arg;
+ acpi_operand_object **operand = &walk_state->operands[0];
acpi_operand_object *obj_desc;
+ acpi_status status;
+
+ FUNCTION_TRACE_PTR ("Ex_create_processor", walk_state);
- FUNCTION_TRACE_PTR ("Ex_create_processor", op);
+ /* Create the processor object */
obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_PROCESSOR);
if (!obj_desc) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Install the new processor object in the parent Node */
-
- status = acpi_ns_attach_object (processor_node, obj_desc,
- (u8) ACPI_TYPE_PROCESSOR);
- if (ACPI_FAILURE (status)) {
- acpi_ut_delete_object_desc (obj_desc);
- return_ACPI_STATUS (status);
- }
-
- /* Get first arg and verify existence */
-
- arg = op->value.arg;
- if (!arg) {
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
-
- /* First arg is the Processor ID */
-
- obj_desc->processor.proc_id = (u8) arg->value.integer;
-
- /* Get second arg and verify existence */
-
- arg = arg->next;
- if (!arg) {
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
-
- /* Second arg is the PBlock Address */
+ /*
+ * Initialize the processor object from the operands
+ */
+ obj_desc->processor.proc_id = (u8) operand[1]->integer.value;
+ obj_desc->processor.address = (ACPI_IO_ADDRESS) operand[2]->integer.value;
+ obj_desc->processor.length = (u8) operand[3]->integer.value;
- obj_desc->processor.address = (ACPI_IO_ADDRESS) arg->value.integer;
+ /* Install the processor object in the parent Node */
- /* Get third arg and verify existence */
+ status = acpi_ns_attach_object ((acpi_namespace_node *) operand[0],
+ obj_desc, (u8) ACPI_TYPE_PROCESSOR);
- arg = arg->next;
- if (!arg) {
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
- /* Third arg is the PBlock Length */
+ /* Remove local reference to the object */
- obj_desc->processor.length = (u8) arg->value.integer;
- return_ACPI_STATUS (AE_OK);
+ acpi_ut_remove_reference (obj_desc);
+ return_ACPI_STATUS (status);
}
@@ -592,58 +423,44 @@
*
* DESCRIPTION: Create a new Power_resource object and populate the fields
*
+ * Power_resource (Name[0], System_level[1], Resource_order[2])
+ *
****************************************************************************/
acpi_status
acpi_ex_create_power_resource (
- acpi_parse_object *op,
- acpi_namespace_node *power_node)
+ acpi_walk_state *walk_state)
{
+ acpi_operand_object **operand = &walk_state->operands[0];
acpi_status status;
- acpi_parse_object *arg;
acpi_operand_object *obj_desc;
- FUNCTION_TRACE_PTR ("Ex_create_power_resource", op);
+ FUNCTION_TRACE_PTR ("Ex_create_power_resource", walk_state);
+
+ /* Create the power resource object */
obj_desc = acpi_ut_create_internal_object (ACPI_TYPE_POWER);
if (!obj_desc) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Install the new power resource object in the parent Node */
-
- status = acpi_ns_attach_object (power_node, obj_desc,
- (u8) ACPI_TYPE_POWER);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS(status);
- }
+ /* Initialize the power object from the operands */
+ obj_desc->power_resource.system_level = (u8) operand[1]->integer.value;
+ obj_desc->power_resource.resource_order = (u16) operand[2]->integer.value;
- /* Get first arg and verify existence */
+ /* Install the power resource object in the parent Node */
- arg = op->value.arg;
- if (!arg) {
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
-
- /* First arg is the System_level */
-
- obj_desc->power_resource.system_level = (u8) arg->value.integer;
-
- /* Get second arg and check existence */
-
- arg = arg->next;
- if (!arg) {
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
+ status = acpi_ns_attach_object ((acpi_namespace_node *) operand[0],
+ obj_desc, (u8) ACPI_TYPE_POWER);
- /* Second arg is the PBlock Address */
- obj_desc->power_resource.resource_order = (u16) arg->value.integer;
+ /* Remove local reference to the object */
- return_ACPI_STATUS (AE_OK);
+ acpi_ut_remove_reference (obj_desc);
+ return_ACPI_STATUS (status);
}
@@ -651,7 +468,7 @@
*
* FUNCTION: Acpi_ex_create_method
*
- * PARAMETERS: Aml_ptr - First byte of the method's AML
+ * PARAMETERS: Aml_start - First byte of the method's AML
* Aml_length - AML byte count for this method
* Method_flags - AML method flag byte
* Method - Method Node
@@ -664,16 +481,17 @@
acpi_status
acpi_ex_create_method (
- u8 *aml_ptr,
+ u8 *aml_start,
u32 aml_length,
- u32 method_flags,
- acpi_namespace_node *method)
+ acpi_walk_state *walk_state)
{
+ acpi_operand_object **operand = &walk_state->operands[0];
acpi_operand_object *obj_desc;
acpi_status status;
+ u8 method_flags;
- FUNCTION_TRACE_PTR ("Ex_create_method", method);
+ FUNCTION_TRACE_PTR ("Ex_create_method", walk_state);
/* Create a new method object */
@@ -683,18 +501,17 @@
return_ACPI_STATUS (AE_NO_MEMORY);
}
- /* Get the method's AML pointer/length from the Op */
+ /* Save the method's AML pointer and length */
- obj_desc->method.pcode = aml_ptr;
- obj_desc->method.pcode_length = aml_length;
+ obj_desc->method.aml_start = aml_start;
+ obj_desc->method.aml_length = aml_length;
- /*
- * First argument is the Method Flags (contains parameter count for the
- * method)
- */
- obj_desc->method.method_flags = (u8) method_flags;
- obj_desc->method.param_count = (u8) (method_flags &
- METHOD_FLAGS_ARG_COUNT);
+ /* disassemble the method flags */
+
+ method_flags = (u8) operand[1]->integer.value;
+
+ obj_desc->method.method_flags = method_flags;
+ obj_desc->method.param_count = (u8) (method_flags & METHOD_FLAGS_ARG_COUNT);
/*
* Get the concurrency count. If required, a semaphore will be
@@ -715,11 +532,16 @@
/* Attach the new object to the method Node */
- status = acpi_ns_attach_object (method, obj_desc, (u8) ACPI_TYPE_METHOD);
- if (ACPI_FAILURE (status)) {
- acpi_ut_delete_object_desc (obj_desc);
- }
+ status = acpi_ns_attach_object ((acpi_namespace_node *) operand[0],
+ obj_desc, (u8) ACPI_TYPE_METHOD);
+
+ /* Remove local reference to the object */
+
+ acpi_ut_remove_reference (obj_desc);
+
+ /* Remove a reference to the operand */
+ acpi_ut_remove_reference (operand[1]);
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exdump.c linux/drivers/acpi/executer/exdump.c
--- v2.4.13/linux/drivers/acpi/executer/exdump.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exdump.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exdump - Interpreter debug output routines
- * $Revision: 123 $
+ * $Revision: 126 $
*
*****************************************************************************/
@@ -46,12 +46,12 @@
* FUNCTION: Acpi_ex_show_hex_value
*
* PARAMETERS: Byte_count - Number of bytes to print (1, 2, or 4)
- * *Aml_ptr - Address in AML stream of bytes to print
+ * *Aml_start - Address in AML stream of bytes to print
* Interpreter_mode - Current running mode (load1/Load2/Exec)
* Lead_space - # of spaces to print ahead of value
* 0 => none ahead but one behind
*
- * DESCRIPTION: Print Byte_count byte(s) starting at Aml_ptr as a single
+ * DESCRIPTION: Print Byte_count byte(s) starting at Aml_start as a single
* value, in hex. If Byte_count > 1 or the value printed is > 9, also
* print in decimal.
*
@@ -60,7 +60,7 @@
void
acpi_ex_show_hex_value (
u32 byte_count,
- u8 *aml_ptr,
+ u8 *aml_start,
u32 lead_space)
{
u32 value; /* Value retrieved from AML stream */
@@ -72,7 +72,7 @@
FUNCTION_TRACE ("Ex_show_hex_value");
- if (!aml_ptr) {
+ if (!aml_start) {
REPORT_ERROR (("Ex_show_hex_value: null pointer\n"));
}
@@ -80,9 +80,9 @@
* AML numbers are always stored little-endian,
* even if the processor is big-endian.
*/
- for (current_aml_ptr = aml_ptr + byte_count,
+ for (current_aml_ptr = aml_start + byte_count,
value = 0;
- current_aml_ptr > aml_ptr; ) {
+ current_aml_ptr > aml_start; ) {
value = (value << 8) + (u32)* --current_aml_ptr;
}
@@ -96,14 +96,12 @@
length += 3 + acpi_ex_digits_needed (value, 10);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, ""));
-
for (length = lead_space; length; --length ) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, " "));
}
while (byte_count--) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, "%02x", *aml_ptr++));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, "%02x", *aml_start++));
if (byte_count) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, " "));
@@ -111,7 +109,7 @@
}
if (show_decimal_value) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, " [%ld]", value));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_LOAD, " [%d]", value));
}
if (0 == lead_space) {
@@ -163,12 +161,6 @@
return (AE_OK);
}
- if (acpi_tb_system_table_pointer (entry_desc)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p is an AML pointer\n",
- entry_desc));
- return (AE_OK);
- }
-
if (!VALID_DESCRIPTOR_TYPE (entry_desc, ACPI_DESC_TYPE_INTERNAL)) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%p Is not a local object \n", entry_desc));
DUMP_BUFFER (entry_desc, sizeof (acpi_operand_object));
@@ -236,8 +228,9 @@
if (ACPI_TYPE_INTEGER == entry_desc->common.type) {
/* Value is a Number */
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " value is [%ld]",
- entry_desc->integer.value));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " value is [%8.8X%8.8x]",
+ HIDWORD(entry_desc->integer.value),
+ LODWORD(entry_desc->integer.value)));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "\n"));
@@ -253,8 +246,9 @@
/* Value is a Number */
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " value is [%ld]",
- entry_desc->integer.value));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " value is [%8.8X%8.8x]",
+ HIDWORD(entry_desc->integer.value),
+ LODWORD(entry_desc->integer.value)));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "\n"));
@@ -262,7 +256,7 @@
case AML_INT_NAMEPATH_OP:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "Reference.Node->Name %x\n",
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "Reference.Node->Name %X\n",
entry_desc->reference.node->name));
break;
@@ -297,8 +291,7 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "Buffer Contents: "));
for (buf = entry_desc->buffer.pointer; length--; ++buf) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
- length ? " %02x" : " %02x", *buf));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " %02x", *buf));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,"\n"));
}
@@ -371,8 +364,10 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "\n"));
}
else {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " base %p Length %X\n",
- entry_desc->region.address, entry_desc->region.length));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, " base %8.8X%8.8X Length %X\n",
+ HIDWORD(entry_desc->region.address),
+ LODWORD(entry_desc->region.address),
+ entry_desc->region.length));
}
break;
@@ -400,7 +395,7 @@
case INTERNAL_TYPE_REGION_FIELD:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
- "Region_field: bits=%X bitaccwidth=%X lock=%X update=%X at byte=%lX bit=%X of below:\n",
+ "Region_field: bits=%X bitaccwidth=%X lock=%X update=%X at byte=%X bit=%X of below:\n",
entry_desc->field.bit_length, entry_desc->field.access_bit_width,
entry_desc->field.lock_rule, entry_desc->field.update_rule,
entry_desc->field.base_byte_offset, entry_desc->field.start_field_bit_offset));
@@ -417,7 +412,7 @@
case ACPI_TYPE_BUFFER_FIELD:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
- "Buffer_field: %X bits at byte %lX bit %X of \n",
+ "Buffer_field: %X bits at byte %X bit %X of \n",
entry_desc->buffer_field.bit_length, entry_desc->buffer_field.base_byte_offset,
entry_desc->buffer_field.start_field_bit_offset));
@@ -449,9 +444,9 @@
case ACPI_TYPE_METHOD:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
- "Method(%X) @ %p:%lX\n",
+ "Method(%X) @ %p:%X\n",
entry_desc->method.param_count,
- entry_desc->method.pcode, entry_desc->method.pcode_length));
+ entry_desc->method.aml_start, entry_desc->method.aml_length));
break;
@@ -608,7 +603,7 @@
}
- acpi_os_printf ("%20s : %4.4s\n", "Name", &node->name);
+ acpi_os_printf ("%20s : %4.4s\n", "Name", (char*)&node->name);
acpi_os_printf ("%20s : %s\n", "Type", acpi_ut_get_type_name (node->type));
acpi_os_printf ("%20s : %X\n", "Flags", node->flags);
acpi_os_printf ("%20s : %X\n", "Owner Id", node->owner_id);
@@ -730,8 +725,8 @@
acpi_os_printf ("%20s : %X\n", "Param_count", obj_desc->method.param_count);
acpi_os_printf ("%20s : %X\n", "Concurrency", obj_desc->method.concurrency);
acpi_os_printf ("%20s : %p\n", "Semaphore", obj_desc->method.semaphore);
- acpi_os_printf ("%20s : %X\n", "Pcode_length", obj_desc->method.pcode_length);
- acpi_os_printf ("%20s : %X\n", "Pcode", obj_desc->method.pcode);
+ acpi_os_printf ("%20s : %X\n", "Aml_length", obj_desc->method.aml_length);
+ acpi_os_printf ("%20s : %X\n", "Aml_start", obj_desc->method.aml_start);
break;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exdyadic.c linux/drivers/acpi/executer/exdyadic.c
--- v2.4.13/linux/drivers/acpi/executer/exdyadic.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exdyadic.c Wed Dec 31 16:00:00 1969
@@ -1,874 +0,0 @@
-/******************************************************************************
- *
- * Module Name: exdyadic - ACPI AML execution for dyadic (2-operand) operators
- * $Revision: 88 $
- *
- *****************************************************************************/
-
-/*
- * Copyright (C) 2000, 2001 R. Byron Moore
- *
- * 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 "acpi.h"
-#include "acparser.h"
-#include "acnamesp.h"
-#include "acinterp.h"
-#include "acevents.h"
-#include "amlcode.h"
-#include "acdispat.h"
-
-
-#define _COMPONENT ACPI_EXECUTER
- MODULE_NAME ("exdyadic")
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_do_concatenate
- *
- * PARAMETERS: *Obj_desc - Object to be converted. Must be an
- * Integer, Buffer, or String
- * Walk_state - Current walk state
- *
- * RETURN: Status
- *
- * DESCRIPTION: Concatenate two objects OF THE SAME TYPE.
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_do_concatenate (
- acpi_operand_object *obj_desc,
- acpi_operand_object *obj_desc2,
- acpi_operand_object **actual_ret_desc,
- acpi_walk_state *walk_state)
-{
- acpi_status status;
- u32 i;
- acpi_integer this_integer;
- acpi_operand_object *ret_desc;
- NATIVE_CHAR *new_buf;
- u32 integer_size = sizeof (acpi_integer);
-
-
- FUNCTION_ENTRY ();
-
-
- /*
- * There are three cases to handle:
- * 1) Two Integers concatenated to produce a buffer
- * 2) Two Strings concatenated to produce a string
- * 3) Two Buffers concatenated to produce a buffer
- */
- switch (obj_desc->common.type) {
- case ACPI_TYPE_INTEGER:
-
- /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */
-
- if (walk_state->method_node->flags & ANOBJ_DATA_WIDTH_32) {
- /*
- * We are running a method that exists in a 32-bit ACPI table.
- * Truncate the value to 32 bits by zeroing out the upper
- * 32-bit field
- */
- integer_size = sizeof (u32);
- }
-
- /* Result of two integers is a buffer */
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER);
- if (!ret_desc) {
- return (AE_NO_MEMORY);
- }
-
- /* Need enough space for two integers */
-
- ret_desc->buffer.length = integer_size * 2;
- new_buf = ACPI_MEM_CALLOCATE (ret_desc->buffer.length);
- if (!new_buf) {
- REPORT_ERROR
- (("Ex_do_concatenate: Buffer allocation failure\n"));
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- ret_desc->buffer.pointer = (u8 *) new_buf;
-
- /* Convert the first integer */
-
- this_integer = obj_desc->integer.value;
- for (i = 0; i < integer_size; i++) {
- new_buf[i] = (u8) this_integer;
- this_integer >>= 8;
- }
-
- /* Convert the second integer */
-
- this_integer = obj_desc2->integer.value;
- for (; i < (integer_size * 2); i++) {
- new_buf[i] = (u8) this_integer;
- this_integer >>= 8;
- }
-
- break;
-
-
- case ACPI_TYPE_STRING:
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_STRING);
- if (!ret_desc) {
- return (AE_NO_MEMORY);
- }
-
- /* Operand1 is string */
-
- new_buf = ACPI_MEM_ALLOCATE (obj_desc->string.length +
- obj_desc2->string.length + 1);
- if (!new_buf) {
- REPORT_ERROR
- (("Ex_do_concatenate: String allocation failure\n"));
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- STRCPY (new_buf, obj_desc->string.pointer);
- STRCPY (new_buf + obj_desc->string.length,
- obj_desc2->string.pointer);
-
- /* Point the return object to the new string */
-
- ret_desc->string.pointer = new_buf;
- ret_desc->string.length = obj_desc->string.length +=
- obj_desc2->string.length;
- break;
-
-
- case ACPI_TYPE_BUFFER:
-
- /* Operand1 is a buffer */
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER);
- if (!ret_desc) {
- return (AE_NO_MEMORY);
- }
-
- new_buf = ACPI_MEM_ALLOCATE (obj_desc->buffer.length +
- obj_desc2->buffer.length);
- if (!new_buf) {
- REPORT_ERROR
- (("Ex_do_concatenate: Buffer allocation failure\n"));
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- MEMCPY (new_buf, obj_desc->buffer.pointer,
- obj_desc->buffer.length);
- MEMCPY (new_buf + obj_desc->buffer.length, obj_desc2->buffer.pointer,
- obj_desc2->buffer.length);
-
- /*
- * Point the return object to the new buffer
- */
-
- ret_desc->buffer.pointer = (u8 *) new_buf;
- ret_desc->buffer.length = obj_desc->buffer.length +
- obj_desc2->buffer.length;
- break;
-
- default:
- status = AE_AML_INTERNAL;
- ret_desc = NULL;
- }
-
-
- *actual_ret_desc = ret_desc;
- return (AE_OK);
-
-
-cleanup:
-
- acpi_ut_remove_reference (ret_desc);
- return (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_dyadic1
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current walk state
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 1 dyadic operator with numeric operands:
- * Notify_op
- *
- * ALLOCATION: Deletes both operands
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_dyadic1 (
- u16 opcode,
- acpi_walk_state *walk_state)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_namespace_node *node;
- acpi_status status = AE_OK;
-
-
- FUNCTION_TRACE_PTR ("Ex_dyadic1", WALK_OPERANDS);
-
-
- /* Examine the opcode */
-
- switch (opcode) {
-
- /* Def_notify := Notify_op (0)Notify_object (1)Notify_value */
-
- case AML_NOTIFY_OP:
-
- /* The Obj_desc is actually an Node */
-
- node = (acpi_namespace_node *) operand[0];
- operand[0] = NULL;
-
- /* Object must be a device or thermal zone */
-
- if (node && operand[1]) {
- switch (node->type) {
- case ACPI_TYPE_DEVICE:
- case ACPI_TYPE_THERMAL:
-
- /*
- * Dispatch the notify to the appropriate handler
- * NOTE: the request is queued for execution after this method
- * completes. The notify handlers are NOT invoked synchronously
- * from this thread -- because handlers may in turn run other
- * control methods.
- */
- status = acpi_ev_queue_notify_request (node,
- (u32) operand[1]->integer.value);
- break;
-
- default:
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type %X\n",
- operand[0]->common.type));
-
- status = AE_AML_OPERAND_TYPE;
- break;
- }
- }
- break;
-
- default:
-
- REPORT_ERROR (("Acpi_ex_dyadic1: Unknown dyadic opcode %X\n", opcode));
- status = AE_AML_BAD_OPCODE;
- }
-
-
- /* Always delete both operands */
-
- acpi_ut_remove_reference (operand[1]);
- acpi_ut_remove_reference (operand[0]);
-
-
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_dyadic2_r
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current walk state
- * Return_desc - Where to store the return object
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 2 dyadic operator with numeric operands and
- * one or two result operands.
- *
- * ALLOCATION: Deletes one operand descriptor -- other remains on stack
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_dyadic2_r (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_operand_object *ret_desc2 = NULL;
- acpi_status status = AE_OK;
-
-
- FUNCTION_TRACE_U32 ("Ex_dyadic2_r", opcode);
-
-
- /* Create an internal return object if necessary */
-
- switch (opcode) {
- case AML_ADD_OP:
- case AML_BIT_AND_OP:
- case AML_BIT_NAND_OP:
- case AML_BIT_OR_OP:
- case AML_BIT_NOR_OP:
- case AML_BIT_XOR_OP:
- case AML_DIVIDE_OP:
- case AML_MOD_OP:
- case AML_MULTIPLY_OP:
- case AML_SHIFT_LEFT_OP:
- case AML_SHIFT_RIGHT_OP:
- case AML_SUBTRACT_OP:
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- break;
- }
-
-
- /*
- * Execute the opcode
- */
- switch (opcode) {
-
- /* Def_add := Add_op Operand1 Operand2 Result */
-
- case AML_ADD_OP:
-
- ret_desc->integer.value = operand[0]->integer.value +
- operand[1]->integer.value;
- break;
-
-
- /* Def_and := And_op Operand1 Operand2 Result */
-
- case AML_BIT_AND_OP:
-
- ret_desc->integer.value = operand[0]->integer.value &
- operand[1]->integer.value;
- break;
-
-
- /* Def_nAnd := NAnd_op Operand1 Operand2 Result */
-
- case AML_BIT_NAND_OP:
-
- ret_desc->integer.value = ~(operand[0]->integer.value &
- operand[1]->integer.value);
- break;
-
-
- /* Def_or := Or_op Operand1 Operand2 Result */
-
- case AML_BIT_OR_OP:
-
- ret_desc->integer.value = operand[0]->integer.value |
- operand[1]->integer.value;
- break;
-
-
- /* Def_nOr := NOr_op Operand1 Operand2 Result */
-
- case AML_BIT_NOR_OP:
-
- ret_desc->integer.value = ~(operand[0]->integer.value |
- operand[1]->integer.value);
- break;
-
-
- /* Def_xOr := XOr_op Operand1 Operand2 Result */
-
- case AML_BIT_XOR_OP:
-
- ret_desc->integer.value = operand[0]->integer.value ^
- operand[1]->integer.value;
- break;
-
-
- /* Def_divide := Divide_op Dividend Divisor Remainder Quotient */
-
- case AML_DIVIDE_OP:
-
- if (!operand[1]->integer.value) {
- REPORT_ERROR
- (("Divide_op: Divide by zero\n"));
-
- status = AE_AML_DIVIDE_BY_ZERO;
- goto cleanup;
- }
-
- ret_desc2 = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc2) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- /* Remainder (modulo) */
-
- ret_desc->integer.value = ACPI_MODULO (operand[0]->integer.value,
- operand[1]->integer.value);
-
- /* Result (what we used to call the quotient) */
-
- ret_desc2->integer.value = ACPI_DIVIDE (operand[0]->integer.value,
- operand[1]->integer.value);
- break;
-
-
- /* Def_mod := Mod_op Dividend Divisor Remainder */
-
- case AML_MOD_OP: /* ACPI 2.0 */
-
- if (!operand[1]->integer.value) {
- REPORT_ERROR
- (("Mod_op: Divide by zero\n"));
-
- status = AE_AML_DIVIDE_BY_ZERO;
- goto cleanup;
- }
-
- /* Remainder (modulo) */
-
- ret_desc->integer.value = ACPI_MODULO (operand[0]->integer.value,
- operand[1]->integer.value);
- break;
-
-
- /* Def_multiply := Multiply_op Operand1 Operand2 Result */
-
- case AML_MULTIPLY_OP:
-
- ret_desc->integer.value = operand[0]->integer.value *
- operand[1]->integer.value;
- break;
-
-
- /* Def_shift_left := Shift_left_op Operand Shift_count Result */
-
- case AML_SHIFT_LEFT_OP:
-
- ret_desc->integer.value = operand[0]->integer.value <<
- operand[1]->integer.value;
- break;
-
-
- /* Def_shift_right := Shift_right_op Operand Shift_count Result */
-
- case AML_SHIFT_RIGHT_OP:
-
- ret_desc->integer.value = operand[0]->integer.value >>
- operand[1]->integer.value;
- break;
-
-
- /* Def_subtract := Subtract_op Operand1 Operand2 Result */
-
- case AML_SUBTRACT_OP:
-
- ret_desc->integer.value = operand[0]->integer.value -
- operand[1]->integer.value;
- break;
-
-
- /* Def_concat := Concat_op Data1 Data2 Result */
-
- case AML_CONCAT_OP:
-
- /*
- * Convert the second operand if necessary. The first operand
- * determines the type of the second operand, (See the Data Types
- * section of the ACPI specification.) Both object types are
- * guaranteed to be either Integer/String/Buffer by the operand
- * resolution mechanism above.
- */
- switch (operand[0]->common.type) {
- case ACPI_TYPE_INTEGER:
- status = acpi_ex_convert_to_integer (operand[1], &operand[1], walk_state);
- break;
-
- case ACPI_TYPE_STRING:
- status = acpi_ex_convert_to_string (operand[1], &operand[1], 16, ACPI_UINT32_MAX, walk_state);
- break;
-
- case ACPI_TYPE_BUFFER:
- status = acpi_ex_convert_to_buffer (operand[1], &operand[1], walk_state);
- break;
-
- default:
- status = AE_AML_INTERNAL;
- }
-
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
-
- /*
- * Both operands are now known to be the same object type
- * (Both are Integer, String, or Buffer), and we can now perform the
- * concatenation.
- */
- status = acpi_ex_do_concatenate (operand[0], operand[1], &ret_desc, walk_state);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
- break;
-
-
- /* Def_to_string := Buffer, Length, Result */
-
- case AML_TO_STRING_OP: /* ACPI 2.0 */
-
- status = acpi_ex_convert_to_string (operand[0], &ret_desc, 16,
- (u32) operand[1]->integer.value, walk_state);
- break;
-
-
- /* Def_concat_res := Buffer, Buffer, Result */
-
- case AML_CONCAT_RES_OP: /* ACPI 2.0 */
-
- status = AE_NOT_IMPLEMENTED;
- goto cleanup;
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_dyadic2_r: Unknown dyadic opcode %X\n",
- opcode));
- status = AE_AML_BAD_OPCODE;
- goto cleanup;
- }
-
-
- /*
- * Store the result of the operation (which is now in Operand[0]) into
- * the result descriptor, or the location pointed to by the result
- * descriptor (Operand[2]).
- */
- status = acpi_ex_store (ret_desc, operand[2], walk_state);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- if (AML_DIVIDE_OP == opcode) {
- status = acpi_ex_store (ret_desc2, operand[3], walk_state);
-
- /*
- * Since the remainder is not returned, remove a reference to
- * the object we created earlier
- */
- acpi_ut_remove_reference (ret_desc);
- *return_desc = ret_desc2;
- }
-
- else {
- *return_desc = ret_desc;
- }
-
-
-cleanup:
-
- /* Always delete the operands */
-
- acpi_ut_remove_reference (operand[0]);
- acpi_ut_remove_reference (operand[1]);
-
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status)) {
- /* On failure, delete the result ops */
-
- acpi_ut_remove_reference (operand[2]);
- acpi_ut_remove_reference (operand[3]);
-
- if (ret_desc) {
- /* And delete the internal return object */
-
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
- }
-
- /* Set the return object and exit */
-
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_dyadic2_s
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current walk state
- * Return_desc - Where to store the return object
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 2 dyadic synchronization operator
- *
- * ALLOCATION: Deletes one operand descriptor -- other remains on stack
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_dyadic2_s (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_status status;
-
-
- FUNCTION_TRACE_PTR ("Ex_dyadic2_s", WALK_OPERANDS);
-
-
- /* Create the internal return object */
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- /* Default return value is FALSE, operation did not time out */
-
- ret_desc->integer.value = 0;
-
-
- /* Examine the opcode */
-
- switch (opcode) {
-
- /* Def_acquire := Acquire_op Mutex_object Timeout */
-
- case AML_ACQUIRE_OP:
-
- status = acpi_ex_acquire_mutex (operand[1], operand[0], walk_state);
- break;
-
-
- /* Def_wait := Wait_op Acpi_event_object Timeout */
-
- case AML_WAIT_OP:
-
- status = acpi_ex_system_wait_event (operand[1], operand[0]);
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_dyadic2_s: Unknown dyadic synchronization opcode %X\n", opcode));
- status = AE_AML_BAD_OPCODE;
- goto cleanup;
- }
-
-
- /*
- * Return a boolean indicating if operation timed out
- * (TRUE) or not (FALSE)
- */
- if (status == AE_TIME) {
- ret_desc->integer.value = ACPI_INTEGER_MAX; /* TRUE, op timed out */
- status = AE_OK;
- }
-
-
-cleanup:
-
- /* Delete params */
-
- acpi_ut_remove_reference (operand[1]);
- acpi_ut_remove_reference (operand[0]);
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status) &&
- (ret_desc)) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
-
-
- /* Set the return object and exit */
-
- *return_desc = ret_desc;
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_dyadic2
- *
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current walk state
- * Return_desc - Where to store the return object
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 2 dyadic operator with numeric operands and
- * no result operands
- *
- * ALLOCATION: Deletes one operand descriptor -- other remains on stack
- * containing result value
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_dyadic2 (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_status status = AE_OK;
- u8 lboolean;
-
-
- FUNCTION_TRACE_PTR ("Ex_dyadic2", WALK_OPERANDS);
-
-
- /* Create the internal return object */
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- /*
- * Execute the Opcode
- */
- lboolean = FALSE;
- switch (opcode) {
-
- /* Def_lAnd := LAnd_op Operand1 Operand2 */
-
- case AML_LAND_OP:
-
- lboolean = (u8) (operand[0]->integer.value &&
- operand[1]->integer.value);
- break;
-
-
- /* Def_lEqual := LEqual_op Operand1 Operand2 */
-
- case AML_LEQUAL_OP:
-
- lboolean = (u8) (operand[0]->integer.value ==
- operand[1]->integer.value);
- break;
-
-
- /* Def_lGreater := LGreater_op Operand1 Operand2 */
-
- case AML_LGREATER_OP:
-
- lboolean = (u8) (operand[0]->integer.value >
- operand[1]->integer.value);
- break;
-
-
- /* Def_lLess := LLess_op Operand1 Operand2 */
-
- case AML_LLESS_OP:
-
- lboolean = (u8) (operand[0]->integer.value <
- operand[1]->integer.value);
- break;
-
-
- /* Def_lOr := LOr_op Operand1 Operand2 */
-
- case AML_LOR_OP:
-
- lboolean = (u8) (operand[0]->integer.value ||
- operand[1]->integer.value);
- break;
-
-
- /* Def_copy := Source, Destination */
-
- case AML_COPY_OP: /* ACPI 2.0 */
-
- status = AE_NOT_IMPLEMENTED;
- goto cleanup;
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_dyadic2: Unknown dyadic opcode %X\n", opcode));
- status = AE_AML_BAD_OPCODE;
- goto cleanup;
- break;
- }
-
-
- /* Set return value to logical TRUE (all ones) or FALSE (zero) */
-
- if (lboolean) {
- ret_desc->integer.value = ACPI_INTEGER_MAX;
- }
- else {
- ret_desc->integer.value = 0;
- }
-
-
-cleanup:
-
- /* Always delete operands */
-
- acpi_ut_remove_reference (operand[0]);
- acpi_ut_remove_reference (operand[1]);
-
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status) &&
- (ret_desc)) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
-
-
- /* Set the return object and exit */
-
- *return_desc = ret_desc;
- return_ACPI_STATUS (status);
-}
-
-
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exfldio.c linux/drivers/acpi/executer/exfldio.c
--- v2.4.13/linux/drivers/acpi/executer/exfldio.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exfldio.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exfldio - Aml Field I/O
- * $Revision: 64 $
+ * $Revision: 66 $
*
*****************************************************************************/
@@ -71,7 +71,6 @@
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
-
/*
* If the Region Address and Length have not been previously evaluated,
* evaluate them now and save the results.
@@ -84,7 +83,6 @@
}
}
-
/*
* Validate the request. The entire request from the byte offset for a
* length of one field datum (access width) must fit within the region.
@@ -158,7 +156,6 @@
*value = 0;
-
/*
* Buffer_fields - Read from a Buffer
* Other Fields - Read from a Operation Region.
@@ -189,7 +186,6 @@
return_ACPI_STATUS (status);
}
-
/*
* The physical address of this field datum is:
*
@@ -201,13 +197,12 @@
address = rgn_desc->region.address + obj_desc->common_field.base_byte_offset +
field_datum_byte_offset;
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Region %s(%X) width %X base:off %X:%X at %8.8lX%8.8lX\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Region %s(%X) width %X base:off %X:%X at %8.8X%8.8X\n",
acpi_ut_get_region_name (rgn_desc->region.space_id),
rgn_desc->region.space_id, obj_desc->common_field.access_bit_width,
obj_desc->common_field.base_byte_offset, field_datum_byte_offset,
HIDWORD(address), LODWORD(address)));
-
/* Invoke the appropriate Address_space/Op_region handler */
status = acpi_ev_address_space_dispatch (rgn_desc, ACPI_READ_ADR_SPACE,
@@ -235,7 +230,7 @@
}
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Returned value=%08lX \n", *value));
+ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Returned value=%08X \n", *value));
return_ACPI_STATUS (status);
}
@@ -381,7 +376,6 @@
byte_field_length, datum_count, obj_desc->common_field.access_bit_width,
obj_desc->common_field.access_byte_width));
-
/*
* Clear the caller's buffer (the whole buffer length as given)
* This is very important, especially in the cases where a byte is read,
@@ -485,7 +479,6 @@
}
}
-
/*
* Store the merged field datum in the caller's buffer, according to
* the granularity of the field (size of each datum).
@@ -501,7 +494,6 @@
datum_offset++;
}
-
return_ACPI_STATUS (AE_OK);
}
@@ -576,7 +568,7 @@
field_datum_byte_offset;
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
- "Store %X in Region %s(%X) at %8.8lX%8.8lX width %X\n",
+ "Store %X in Region %s(%X) at %8.8X%8.8X width %X\n",
value, acpi_ut_get_region_name (rgn_desc->region.space_id),
rgn_desc->region.space_id, HIDWORD(address), LODWORD(address),
obj_desc->common_field.access_bit_width));
@@ -612,7 +604,7 @@
}
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value written=%08lX \n", value));
+ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value written=%08X \n", value));
return_ACPI_STATUS (status);
}
@@ -649,16 +641,13 @@
merged_value = field_value;
-
/* If the mask is all ones, we don't need to worry about the update rule */
if (mask != ACPI_UINT32_MAX) {
/* Decode the update rule */
switch (obj_desc->common_field.update_rule) {
-
case UPDATE_PRESERVE:
-
/*
* Check if update rule needs to be applied (not if mask is all
* ones) The left shift drops the bits we want to ignore.
@@ -772,7 +761,6 @@
byte_field_length, datum_count, obj_desc->common_field.access_bit_width,
obj_desc->common_field.access_byte_width));
-
/*
* Break the request into up to three parts (similar to an I/O request):
* 1) non-aligned part at start
@@ -868,31 +856,34 @@
merged_datum = this_raw_datum;
}
-
/*
* Special handling for the last datum if the field does NOT end on
* a datum boundary. Update Rule must be applied to the bits outside
* the field.
*/
- if ((datum_offset == datum_count) &&
- obj_desc->common_field.end_field_valid_bits) {
+ if (datum_offset == datum_count) {
/*
- * Part3:
- * This is the last datum and the field does not end on a datum boundary.
- * Build the partial datum and write with the update rule.
+ * If there are dangling non-aligned bits, perform one more merged write
+ * Else - field is aligned at the end, no need for any more writes
*/
+ if (obj_desc->common_field.end_field_valid_bits) {
+ /*
+ * Part3:
+ * This is the last datum and the field does not end on a datum boundary.
+ * Build the partial datum and write with the update rule.
+ *
+ * Mask off the unused bits above (after) the end-of-field
+ */
+ mask = MASK_BITS_ABOVE (obj_desc->common_field.end_field_valid_bits);
+ merged_datum &= mask;
- /* Mask off the unused bits above (after) the end-of-field */
-
- mask = MASK_BITS_ABOVE (obj_desc->common_field.end_field_valid_bits);
- merged_datum &= mask;
-
- /* Write the last datum with the update rule */
+ /* Write the last datum with the update rule */
- status = acpi_ex_write_field_datum_with_update_rule (obj_desc, mask,
- merged_datum, field_datum_byte_offset);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
+ status = acpi_ex_write_field_datum_with_update_rule (obj_desc, mask,
+ merged_datum, field_datum_byte_offset);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
}
}
@@ -912,7 +903,6 @@
*/
previous_raw_datum = this_raw_datum;
}
-
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exmisc.c linux/drivers/acpi/executer/exmisc.c
--- v2.4.13/linux/drivers/acpi/executer/exmisc.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exmisc.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes
- * $Revision: 83 $
+ * $Revision: 92 $
*
*****************************************************************************/
@@ -38,424 +38,403 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ex_triadic
+ * FUNCTION: Acpi_ex_get_object_reference
*
- * PARAMETERS: Opcode - The opcode to be executed
- * Walk_state - Current walk state
- * Return_desc - Where to store the return object
+ * PARAMETERS: Obj_desc - Create a reference to this object
+ * Return_desc - Where to store the reference
*
* RETURN: Status
*
- * DESCRIPTION: Execute Triadic operator (3 operands)
- *
- * ALLOCATION: Deletes one operand descriptor -- other remains on stack
+ * DESCRIPTION: Obtain and return a "reference" to the target object
+ * Common code for the Ref_of_op and the Cond_ref_of_op.
*
******************************************************************************/
acpi_status
-acpi_ex_triadic (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
+acpi_ex_get_object_reference (
+ acpi_operand_object *obj_desc,
+ acpi_operand_object **return_desc,
+ acpi_walk_state *walk_state)
{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_operand_object *tmp_desc;
- ACPI_SIGNAL_FATAL_INFO *fatal;
acpi_status status = AE_OK;
- FUNCTION_TRACE ("Ex_triadic");
-
-
-#define obj_desc1 operand[0]
-#define obj_desc2 operand[1]
-#define res_desc operand[2]
-
-
- switch (opcode) {
-
- case AML_FATAL_OP:
-
- /* Def_fatal := Fatal_op Fatal_type Fatal_code Fatal_arg */
+ FUNCTION_TRACE_PTR ("Ex_get_object_reference", obj_desc);
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "Fatal_op: Type %x Code %x Arg %x <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
- (u32) obj_desc1->integer.value, (u32) obj_desc2->integer.value,
- (u32) res_desc->integer.value));
-
- fatal = ACPI_MEM_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO));
- if (fatal) {
- fatal->type = (u32) obj_desc1->integer.value;
- fatal->code = (u32) obj_desc2->integer.value;
- fatal->argument = (u32) res_desc->integer.value;
+ if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_INTERNAL)) {
+ if (obj_desc->common.type != INTERNAL_TYPE_REFERENCE) {
+ *return_desc = NULL;
+ status = AE_TYPE;
+ goto cleanup;
}
/*
- * Signal the OS
+ * Not a Name -- an indirect name pointer would have
+ * been converted to a direct name pointer in Acpi_ex_resolve_operands
*/
- acpi_os_signal (ACPI_SIGNAL_FATAL, fatal);
-
- /* Might return while OS is shutting down */
-
- ACPI_MEM_FREE (fatal);
- break;
-
+ switch (obj_desc->reference.opcode) {
+ case AML_LOCAL_OP:
+ case AML_ARG_OP:
- case AML_MID_OP:
-
- /* Def_mid := Mid_op Source Index Length Result */
-
- /* Create the internal return object (string or buffer) */
-
- break;
-
-
- case AML_INDEX_OP:
-
- /* Def_index := Index_op Source Index Destination */
+ *return_desc = (void *) acpi_ds_method_data_get_node (obj_desc->reference.opcode,
+ obj_desc->reference.offset, walk_state);
+ break;
- /* Create the internal return object */
+ default:
- ret_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(Internal) Unknown Ref subtype %02x\n",
+ obj_desc->reference.opcode));
+ *return_desc = NULL;
+ status = AE_AML_INTERNAL;
goto cleanup;
}
- /*
- * At this point, the Obj_desc1 operand is either a Package or a Buffer
- */
- if (obj_desc1->common.type == ACPI_TYPE_PACKAGE) {
- /* Object to be indexed is a Package */
+ }
- if (obj_desc2->integer.value >= obj_desc1->package.count) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Index value beyond package end\n"));
- status = AE_AML_PACKAGE_LIMIT;
- goto cleanup;
- }
-
- if ((res_desc->common.type == INTERNAL_TYPE_REFERENCE) &&
- (res_desc->reference.opcode == AML_ZERO_OP)) {
- /*
- * There is no actual result descriptor (the Zero_op Result
- * descriptor is a placeholder), so just delete the placeholder and
- * return a reference to the package element
- */
- acpi_ut_remove_reference (res_desc);
- }
-
- else {
- /*
- * Each element of the package is an internal object. Get the one
- * we are after.
- */
- tmp_desc = obj_desc1->package.elements[obj_desc2->integer.value];
- ret_desc->reference.opcode = AML_INDEX_OP;
- ret_desc->reference.target_type = tmp_desc->common.type;
- ret_desc->reference.object = tmp_desc;
-
- status = acpi_ex_store (ret_desc, res_desc, walk_state);
- ret_desc->reference.object = NULL;
- }
+ else if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
+ /* Must be a named object; Just return the Node */
- /*
- * The local return object must always be a reference to the package element,
- * not the element itself.
- */
- ret_desc->reference.opcode = AML_INDEX_OP;
- ret_desc->reference.target_type = ACPI_TYPE_PACKAGE;
- ret_desc->reference.where = &obj_desc1->package.elements[obj_desc2->integer.value];
- }
-
- else {
- /* Object to be indexed is a Buffer */
-
- if (obj_desc2->integer.value >= obj_desc1->buffer.length) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Index value beyond end of buffer\n"));
- status = AE_AML_BUFFER_LIMIT;
- goto cleanup;
- }
-
- ret_desc->reference.opcode = AML_INDEX_OP;
- ret_desc->reference.target_type = ACPI_TYPE_BUFFER_FIELD;
- ret_desc->reference.object = obj_desc1;
- ret_desc->reference.offset = (u32) obj_desc2->integer.value;
+ *return_desc = obj_desc;
+ }
- status = acpi_ex_store (ret_desc, res_desc, walk_state);
- }
- break;
+ else {
+ *return_desc = NULL;
+ status = AE_TYPE;
}
cleanup:
- /* Always delete operands */
-
- acpi_ut_remove_reference (obj_desc1);
- acpi_ut_remove_reference (obj_desc2);
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status)) {
- acpi_ut_remove_reference (res_desc);
-
- if (ret_desc) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
- }
-
- /* Set the return object and exit */
-
- *return_desc = ret_desc;
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p Ref=%p\n", obj_desc, *return_desc));
return_ACPI_STATUS (status);
}
/*******************************************************************************
*
- * FUNCTION: Acpi_ex_hexadic
+ * FUNCTION: Acpi_ex_do_concatenate
*
- * PARAMETERS: Opcode - The opcode to be executed
+ * PARAMETERS: *Obj_desc - Object to be converted. Must be an
+ * Integer, Buffer, or String
* Walk_state - Current walk state
- * Return_desc - Where to store the return object
*
* RETURN: Status
*
- * DESCRIPTION: Execute Match operator
+ * DESCRIPTION: Concatenate two objects OF THE SAME TYPE.
*
******************************************************************************/
acpi_status
-acpi_ex_hexadic (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
+acpi_ex_do_concatenate (
+ acpi_operand_object *obj_desc,
+ acpi_operand_object *obj_desc2,
+ acpi_operand_object **actual_return_desc,
+ acpi_walk_state *walk_state)
{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_status status = AE_OK;
- u32 index;
- u32 match_value = (u32) -1;
+ acpi_status status;
+ u32 i;
+ acpi_integer this_integer;
+ acpi_operand_object *return_desc;
+ NATIVE_CHAR *new_buf;
+ u32 integer_size = sizeof (acpi_integer);
- FUNCTION_TRACE ("Ex_hexadic");
+ FUNCTION_ENTRY ();
-#define pkg_desc operand[0]
-#define op1_desc operand[1]
-#define V1_desc operand[2]
-#define op2_desc operand[3]
-#define V2_desc operand[4]
-#define start_desc operand[5]
+ /*
+ * There are three cases to handle:
+ * 1) Two Integers concatenated to produce a buffer
+ * 2) Two Strings concatenated to produce a string
+ * 3) Two Buffers concatenated to produce a buffer
+ */
+ switch (obj_desc->common.type) {
+ case ACPI_TYPE_INTEGER:
- switch (opcode) {
+ /* Handle both ACPI 1.0 and ACPI 2.0 Integer widths */
- case AML_MATCH_OP:
+ if (walk_state->method_node->flags & ANOBJ_DATA_WIDTH_32) {
+ /*
+ * We are running a method that exists in a 32-bit ACPI table.
+ * Truncate the value to 32 bits by zeroing out the upper
+ * 32-bit field
+ */
+ integer_size = sizeof (u32);
+ }
- /* Validate match comparison sub-opcodes */
+ /* Result of two integers is a buffer */
- if ((op1_desc->integer.value > MAX_MATCH_OPERATOR) ||
- (op2_desc->integer.value > MAX_MATCH_OPERATOR)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "operation encoding out of range\n"));
- status = AE_AML_OPERAND_VALUE;
- goto cleanup;
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER);
+ if (!return_desc) {
+ return (AE_NO_MEMORY);
}
- index = (u32) start_desc->integer.value;
- if (index >= (u32) pkg_desc->package.count) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Start position value out of range\n"));
- status = AE_AML_PACKAGE_LIMIT;
+ /* Need enough space for two integers */
+
+ return_desc->buffer.length = integer_size * 2;
+ new_buf = ACPI_MEM_CALLOCATE (return_desc->buffer.length);
+ if (!new_buf) {
+ REPORT_ERROR
+ (("Ex_do_concatenate: Buffer allocation failure\n"));
+ status = AE_NO_MEMORY;
goto cleanup;
}
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
+ return_desc->buffer.pointer = (u8 *) new_buf;
+
+ /* Convert the first integer */
+
+ this_integer = obj_desc->integer.value;
+ for (i = 0; i < integer_size; i++) {
+ new_buf[i] = (u8) this_integer;
+ this_integer >>= 8;
+ }
+
+ /* Convert the second integer */
+
+ this_integer = obj_desc2->integer.value;
+ for (; i < (integer_size * 2); i++) {
+ new_buf[i] = (u8) this_integer;
+ this_integer >>= 8;
+ }
+
+ break;
+
+
+ case ACPI_TYPE_STRING:
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_STRING);
+ if (!return_desc) {
+ return (AE_NO_MEMORY);
+ }
+
+ /* Operand0 is string */
+
+ new_buf = ACPI_MEM_ALLOCATE (obj_desc->string.length +
+ obj_desc2->string.length + 1);
+ if (!new_buf) {
+ REPORT_ERROR
+ (("Ex_do_concatenate: String allocation failure\n"));
status = AE_NO_MEMORY;
goto cleanup;
+ }
+
+ STRCPY (new_buf, obj_desc->string.pointer);
+ STRCPY (new_buf + obj_desc->string.length,
+ obj_desc2->string.pointer);
+
+ /* Point the return object to the new string */
+
+ return_desc->string.pointer = new_buf;
+ return_desc->string.length = obj_desc->string.length +=
+ obj_desc2->string.length;
+ break;
+
+
+ case ACPI_TYPE_BUFFER:
+
+ /* Operand0 is a buffer */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER);
+ if (!return_desc) {
+ return (AE_NO_MEMORY);
+ }
+ new_buf = ACPI_MEM_ALLOCATE (obj_desc->buffer.length +
+ obj_desc2->buffer.length);
+ if (!new_buf) {
+ REPORT_ERROR
+ (("Ex_do_concatenate: Buffer allocation failure\n"));
+ status = AE_NO_MEMORY;
+ goto cleanup;
}
+ MEMCPY (new_buf, obj_desc->buffer.pointer,
+ obj_desc->buffer.length);
+ MEMCPY (new_buf + obj_desc->buffer.length, obj_desc2->buffer.pointer,
+ obj_desc2->buffer.length);
+
/*
- * Examine each element until a match is found. Within the loop,
- * "continue" signifies that the current element does not match
- * and the next should be examined.
- * Upon finding a match, the loop will terminate via "break" at
- * the bottom. If it terminates "normally", Match_value will be -1
- * (its initial value) indicating that no match was found. When
- * returned as a Number, this will produce the Ones value as specified.
+ * Point the return object to the new buffer
*/
- for ( ; index < pkg_desc->package.count; ++index) {
- /*
- * Treat any NULL or non-numeric elements as non-matching.
- * TBD [Unhandled] - if an element is a Name,
- * should we examine its value?
- */
- if (!pkg_desc->package.elements[index] ||
- ACPI_TYPE_INTEGER != pkg_desc->package.elements[index]->common.type) {
- continue;
- }
- /*
- * Within these switch statements:
- * "break" (exit from the switch) signifies a match;
- * "continue" (proceed to next iteration of enclosing
- * "for" loop) signifies a non-match.
- */
- switch (op1_desc->integer.value) {
+ return_desc->buffer.pointer = (u8 *) new_buf;
+ return_desc->buffer.length = obj_desc->buffer.length +
+ obj_desc2->buffer.length;
+ break;
- case MATCH_MTR: /* always true */
- break;
+ default:
+ status = AE_AML_INTERNAL;
+ return_desc = NULL;
+ }
- case MATCH_MEQ: /* true if equal */
+ *actual_return_desc = return_desc;
+ return (AE_OK);
- if (pkg_desc->package.elements[index]->integer.value
- != V1_desc->integer.value) {
- continue;
- }
- break;
+cleanup:
- case MATCH_MLE: /* true if less than or equal */
+ acpi_ut_remove_reference (return_desc);
+ return (status);
+}
- if (pkg_desc->package.elements[index]->integer.value
- > V1_desc->integer.value) {
- continue;
- }
- break;
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_do_math_op
+ *
+ * PARAMETERS: Opcode - AML opcode
+ * Operand0 - Integer operand #0
+ * Operand0 - Integer operand #1
+ *
+ * RETURN: Integer result of the operation
+ *
+ * DESCRIPTION: Execute a math AML opcode. The purpose of having all of the
+ * math functions here is to prevent a lot of pointer dereferencing
+ * to obtain the operands.
+ *
+ ******************************************************************************/
- case MATCH_MLT: /* true if less than */
+acpi_integer
+acpi_ex_do_math_op (
+ u16 opcode,
+ acpi_integer operand0,
+ acpi_integer operand1)
+{
- if (pkg_desc->package.elements[index]->integer.value
- >= V1_desc->integer.value) {
- continue;
- }
- break;
+ switch (opcode) {
+ case AML_ADD_OP: /* Add (Operand0, Operand1, Result) */
- case MATCH_MGE: /* true if greater than or equal */
+ return (operand0 + operand1);
- if (pkg_desc->package.elements[index]->integer.value
- < V1_desc->integer.value) {
- continue;
- }
- break;
+ case AML_BIT_AND_OP: /* And (Operand0, Operand1, Result) */
- case MATCH_MGT: /* true if greater than */
+ return (operand0 & operand1);
- if (pkg_desc->package.elements[index]->integer.value
- <= V1_desc->integer.value) {
- continue;
- }
- break;
+ case AML_BIT_NAND_OP: /* NAnd (Operand0, Operand1, Result) */
- default: /* undefined */
+ return (~(operand0 & operand1));
- continue;
- }
+ case AML_BIT_OR_OP: /* Or (Operand0, Operand1, Result) */
- switch(op2_desc->integer.value) {
+ return (operand0 | operand1);
- case MATCH_MTR:
- break;
+ case AML_BIT_NOR_OP: /* NOr (Operand0, Operand1, Result) */
+ return (~(operand0 | operand1));
- case MATCH_MEQ:
- if (pkg_desc->package.elements[index]->integer.value
- != V2_desc->integer.value) {
- continue;
- }
- break;
+ case AML_BIT_XOR_OP: /* XOr (Operand0, Operand1, Result) */
+ return (operand0 ^ operand1);
- case MATCH_MLE:
- if (pkg_desc->package.elements[index]->integer.value
- > V2_desc->integer.value) {
- continue;
- }
- break;
+ case AML_MULTIPLY_OP: /* Multiply (Operand0, Operand1, Result) */
+ return (operand0 * operand1);
- case MATCH_MLT:
- if (pkg_desc->package.elements[index]->integer.value
- >= V2_desc->integer.value) {
- continue;
- }
- break;
+ case AML_SHIFT_LEFT_OP: /* Shift_left (Operand, Shift_count, Result) */
+ return (operand0 << operand1);
- case MATCH_MGE:
- if (pkg_desc->package.elements[index]->integer.value
- < V2_desc->integer.value) {
- continue;
- }
- break;
+ case AML_SHIFT_RIGHT_OP: /* Shift_right (Operand, Shift_count, Result) */
+ return (operand0 >> operand1);
- case MATCH_MGT:
- if (pkg_desc->package.elements[index]->integer.value
- <= V2_desc->integer.value) {
- continue;
- }
- break;
+ case AML_SUBTRACT_OP: /* Subtract (Operand0, Operand1, Result) */
+ return (operand0 - operand1);
- default:
+ default:
- continue;
- }
+ return (0);
+ }
+}
- /* Match found: exit from loop */
- match_value = index;
- break;
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_do_logical_op
+ *
+ * PARAMETERS: Opcode - AML opcode
+ * Operand0 - Integer operand #0
+ * Operand0 - Integer operand #1
+ *
+ * RETURN: TRUE/FALSE result of the operation
+ *
+ * DESCRIPTION: Execute a logical AML opcode. The purpose of having all of the
+ * functions here is to prevent a lot of pointer dereferencing
+ * to obtain the operands and to simplify the generation of the
+ * logical value.
+ *
+ * Note: cleanest machine code seems to be produced by the code
+ * below, rather than using statements of the form:
+ * Result = (Operand0 == Operand1);
+ *
+ ******************************************************************************/
+
+u8
+acpi_ex_do_logical_op (
+ u16 opcode,
+ acpi_integer operand0,
+ acpi_integer operand1)
+{
+
+
+ switch (opcode) {
+
+ case AML_LAND_OP: /* LAnd (Operand0, Operand1) */
+
+ if (operand0 && operand1) {
+ return (TRUE);
}
+ break;
- /* Match_value is the return value */
- ret_desc->integer.value = match_value;
+ case AML_LEQUAL_OP: /* LEqual (Operand0, Operand1) */
+
+ if (operand0 == operand1) {
+ return (TRUE);
+ }
break;
- }
+ case AML_LGREATER_OP: /* LGreater (Operand0, Operand1) */
-cleanup:
+ if (operand0 > operand1) {
+ return (TRUE);
+ }
+ break;
- /* Free the operands */
- acpi_ut_remove_reference (start_desc);
- acpi_ut_remove_reference (V2_desc);
- acpi_ut_remove_reference (op2_desc);
- acpi_ut_remove_reference (V1_desc);
- acpi_ut_remove_reference (op1_desc);
- acpi_ut_remove_reference (pkg_desc);
-
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status) &&
- (ret_desc)) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
+ case AML_LLESS_OP: /* LLess (Operand0, Operand1) */
+ if (operand0 < operand1) {
+ return (TRUE);
+ }
+ break;
- /* Set the return object and exit */
- *return_desc = ret_desc;
- return_ACPI_STATUS (status);
+ case AML_LOR_OP: /* LOr (Operand0, Operand1) */
+
+ if (operand0 || operand1) {
+ return (TRUE);
+ }
+ break;
+ }
+
+ return (FALSE);
}
+
+
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exmonad.c linux/drivers/acpi/executer/exmonad.c
--- v2.4.13/linux/drivers/acpi/executer/exmonad.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exmonad.c Wed Dec 31 16:00:00 1969
@@ -1,970 +0,0 @@
-
-/******************************************************************************
- *
- * Module Name: exmonad - ACPI AML execution for monadic (1 operand) operators
- * $Revision: 111 $
- *
- *****************************************************************************/
-
-/*
- * Copyright (C) 2000, 2001 R. Byron Moore
- *
- * 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 "acpi.h"
-#include "acparser.h"
-#include "acdispat.h"
-#include "acinterp.h"
-#include "amlcode.h"
-#include "acnamesp.h"
-
-
-#define _COMPONENT ACPI_EXECUTER
- MODULE_NAME ("exmonad")
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_get_object_reference
- *
- * PARAMETERS: Obj_desc - Create a reference to this object
- * Ret_desc - Where to store the reference
- *
- * RETURN: Status
- *
- * DESCRIPTION: Obtain and return a "reference" to the target object
- * Common code for the Ref_of_op and the Cond_ref_of_op.
- *
- ******************************************************************************/
-
-static acpi_status
-acpi_ex_get_object_reference (
- acpi_operand_object *obj_desc,
- acpi_operand_object **ret_desc,
- acpi_walk_state *walk_state)
-{
- acpi_status status = AE_OK;
-
-
- FUNCTION_TRACE_PTR ("Ex_get_object_reference", obj_desc);
-
-
- if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_INTERNAL)) {
- if (obj_desc->common.type != INTERNAL_TYPE_REFERENCE) {
- *ret_desc = NULL;
- status = AE_TYPE;
- goto cleanup;
- }
-
- /*
- * Not a Name -- an indirect name pointer would have
- * been converted to a direct name pointer in Acpi_ex_resolve_operands
- */
- switch (obj_desc->reference.opcode) {
- case AML_LOCAL_OP:
- case AML_ARG_OP:
-
- *ret_desc = (void *) acpi_ds_method_data_get_node (obj_desc->reference.opcode,
- obj_desc->reference.offset, walk_state);
- break;
-
- default:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "(Internal) Unknown Ref subtype %02x\n",
- obj_desc->reference.opcode));
- *ret_desc = NULL;
- status = AE_AML_INTERNAL;
- goto cleanup;
- }
-
- }
-
- else if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
- /* Must be a named object; Just return the Node */
-
- *ret_desc = obj_desc;
- }
-
- else {
- *ret_desc = NULL;
- status = AE_TYPE;
- }
-
-
-cleanup:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p Ref=%p\n", obj_desc, *ret_desc));
- return_ACPI_STATUS (status);
-}
-
-#define obj_desc operand[0]
-#define res_desc operand[1]
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_monadic1
- *
- * PARAMETERS: Opcode - The opcode to be executed
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 1 monadic operator with numeric operand on
- * object stack
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_monadic1 (
- u16 opcode,
- acpi_walk_state *walk_state)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_status status;
-
-
- FUNCTION_TRACE_PTR ("Ex_monadic1", WALK_OPERANDS);
-
-
- /* Examine the opcode */
-
- switch (opcode) {
-
- /* Def_release := Release_op Mutex_object */
-
- case AML_RELEASE_OP:
-
- status = acpi_ex_release_mutex (obj_desc, walk_state);
- break;
-
-
- /* Def_reset := Reset_op Acpi_event_object */
-
- case AML_RESET_OP:
-
- status = acpi_ex_system_reset_event (obj_desc);
- break;
-
-
- /* Def_signal := Signal_op Acpi_event_object */
-
- case AML_SIGNAL_OP:
-
- status = acpi_ex_system_signal_event (obj_desc);
- break;
-
-
- /* Def_sleep := Sleep_op Msec_time */
-
- case AML_SLEEP_OP:
-
- acpi_ex_system_do_suspend ((u32) obj_desc->integer.value);
- break;
-
-
- /* Def_stall := Stall_op Usec_time */
-
- case AML_STALL_OP:
-
- acpi_ex_system_do_stall ((u32) obj_desc->integer.value);
- break;
-
-
- /* Unknown opcode */
-
- default:
-
- REPORT_ERROR (("Acpi_ex_monadic1: Unknown monadic opcode %X\n",
- opcode));
- status = AE_AML_BAD_OPCODE;
- break;
-
- } /* switch */
-
-
- /* Always delete the operand */
-
- acpi_ut_remove_reference (obj_desc);
-
- return_ACPI_STATUS (AE_OK);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_monadic2_r
- *
- * PARAMETERS: Opcode - The opcode to be executed
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 2 monadic operator with numeric operand and
- * result operand on operand stack
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_monadic2_r (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *ret_desc = NULL;
- acpi_operand_object *ret_desc2 = NULL;
- u32 res_val;
- acpi_status status = AE_OK;
- u32 i;
- u32 j;
- acpi_integer digit;
-
-
- FUNCTION_TRACE_PTR ("Ex_monadic2_r", WALK_OPERANDS);
-
-
- /* Create a return object of type NUMBER for most opcodes */
-
- switch (opcode) {
- case AML_BIT_NOT_OP:
- case AML_FIND_SET_LEFT_BIT_OP:
- case AML_FIND_SET_RIGHT_BIT_OP:
- case AML_FROM_BCD_OP:
- case AML_TO_BCD_OP:
- case AML_COND_REF_OF_OP:
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- break;
- }
-
-
- switch (opcode) {
- /* Def_not := Not_op Operand Result */
-
- case AML_BIT_NOT_OP:
-
- ret_desc->integer.value = ~obj_desc->integer.value;
- break;
-
-
- /* Def_find_set_left_bit := Find_set_left_bit_op Operand Result */
-
- case AML_FIND_SET_LEFT_BIT_OP:
-
- ret_desc->integer.value = obj_desc->integer.value;
-
- /*
- * Acpi specification describes Integer type as a little
- * endian unsigned value, so this boundary condition is valid.
- */
- for (res_val = 0; ret_desc->integer.value && res_val < ACPI_INTEGER_BIT_SIZE; ++res_val) {
- ret_desc->integer.value >>= 1;
- }
-
- ret_desc->integer.value = res_val;
- break;
-
-
- /* Def_find_set_right_bit := Find_set_right_bit_op Operand Result */
-
- case AML_FIND_SET_RIGHT_BIT_OP:
-
- ret_desc->integer.value = obj_desc->integer.value;
-
- /*
- * Acpi specification describes Integer type as a little
- * endian unsigned value, so this boundary condition is valid.
- */
- for (res_val = 0; ret_desc->integer.value && res_val < ACPI_INTEGER_BIT_SIZE; ++res_val) {
- ret_desc->integer.value <<= 1;
- }
-
- /* Since returns must be 1-based, subtract from 33 (65) */
-
- ret_desc->integer.value = res_val == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - res_val;
- break;
-
-
- /* Def_from_bDC := From_bCDOp BCDValue Result */
-
- case AML_FROM_BCD_OP:
-
- /*
- * The 64-bit ACPI integer can hold 16 4-bit BCD integers
- */
- ret_desc->integer.value = 0;
- for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) {
- /* Get one BCD digit */
-
- digit = (acpi_integer) ((obj_desc->integer.value >> (i * 4)) & 0xF);
-
- /* Check the range of the digit */
-
- if (digit > 9) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "BCD digit too large: \n",
- digit));
- status = AE_AML_NUMERIC_OVERFLOW;
- goto cleanup;
- }
-
- if (digit > 0) {
- /* Sum into the result with the appropriate power of 10 */
-
- for (j = 0; j < i; j++) {
- digit *= 10;
- }
-
- ret_desc->integer.value += digit;
- }
- }
- break;
-
-
- /* Def_to_bDC := To_bCDOp Operand Result */
-
- case AML_TO_BCD_OP:
-
-
- if (obj_desc->integer.value > ACPI_MAX_BCD_VALUE) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "BCD overflow: %d\n",
- obj_desc->integer.value));
- status = AE_AML_NUMERIC_OVERFLOW;
- goto cleanup;
- }
-
- ret_desc->integer.value = 0;
- for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) {
- /* Divide by nth factor of 10 */
-
- digit = obj_desc->integer.value;
- for (j = 0; j < i; j++) {
- digit = ACPI_DIVIDE (digit, 10);
- }
-
- /* Create the BCD digit */
-
- if (digit > 0) {
- ret_desc->integer.value += (ACPI_MODULO (digit, 10) << (i * 4));
- }
- }
- break;
-
-
- /* Def_cond_ref_of := Cond_ref_of_op Source_object Result */
-
- case AML_COND_REF_OF_OP:
-
- /*
- * This op is a little strange because the internal return value is
- * different than the return value stored in the result descriptor
- * (There are really two return values)
- */
- if ((acpi_namespace_node *) obj_desc == acpi_gbl_root_node) {
- /*
- * This means that the object does not exist in the namespace,
- * return FALSE
- */
- ret_desc->integer.value = 0;
-
- /*
- * Must delete the result descriptor since there is no reference
- * being returned
- */
- acpi_ut_remove_reference (res_desc);
- goto cleanup;
- }
-
- /* Get the object reference and store it */
-
- status = acpi_ex_get_object_reference (obj_desc, &ret_desc2, walk_state);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- status = acpi_ex_store (ret_desc2, res_desc, walk_state);
-
- /* The object exists in the namespace, return TRUE */
-
- ret_desc->integer.value = ACPI_INTEGER_MAX;
- goto cleanup;
- break;
-
-
- case AML_STORE_OP:
-
- /*
- * A store operand is typically a number, string, buffer or lvalue
- * TBD: [Unhandled] What about a store to a package?
- */
-
- /*
- * Do the store, and be careful about deleting the source object,
- * since the object itself may have been stored.
- */
- status = acpi_ex_store (obj_desc, res_desc, walk_state);
- if (ACPI_FAILURE (status)) {
- /* On failure, just delete the Obj_desc */
-
- acpi_ut_remove_reference (obj_desc);
- return_ACPI_STATUS (status);
- }
-
- /*
- * Normally, we would remove a reference on the Obj_desc parameter;
- * But since it is being used as the internal return object
- * (meaning we would normally increment it), the two cancel out,
- * and we simply don't do anything.
- */
- *return_desc = obj_desc;
- return_ACPI_STATUS (status);
- break;
-
-
- case AML_DEBUG_OP:
-
- /* Reference, returning an Reference */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Debug_op should never get here!\n"));
- return_ACPI_STATUS (AE_OK);
- break;
-
-
- /*
- * ACPI 2.0 Opcodes
- */
- case AML_TO_DECSTRING_OP:
- status = acpi_ex_convert_to_string (obj_desc, &ret_desc, 10, ACPI_UINT32_MAX, walk_state);
- break;
-
-
- case AML_TO_HEXSTRING_OP:
- status = acpi_ex_convert_to_string (obj_desc, &ret_desc, 16, ACPI_UINT32_MAX, walk_state);
- break;
-
- case AML_TO_BUFFER_OP:
- status = acpi_ex_convert_to_buffer (obj_desc, &ret_desc, walk_state);
- break;
-
- case AML_TO_INTEGER_OP:
- status = acpi_ex_convert_to_integer (obj_desc, &ret_desc, walk_state);
- break;
-
-
- /*
- * These are obsolete opcodes
- */
-
- /* Def_shift_left_bit := Shift_left_bit_op Source Bit_num */
- /* Def_shift_right_bit := Shift_right_bit_op Source Bit_num */
-
- case AML_SHIFT_LEFT_BIT_OP:
- case AML_SHIFT_RIGHT_BIT_OP:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s is unimplemented\n",
- acpi_ps_get_opcode_name (opcode)));
- status = AE_SUPPORT;
- goto cleanup;
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_monadic2_r: Unknown monadic opcode %X\n",
- opcode));
- status = AE_AML_BAD_OPCODE;
- goto cleanup;
- }
-
-
- status = acpi_ex_store (ret_desc, res_desc, walk_state);
-
-
-cleanup:
- /* Always delete the operand object */
-
- acpi_ut_remove_reference (obj_desc);
-
- /* Delete return object(s) on error */
-
- if (ACPI_FAILURE (status)) {
- acpi_ut_remove_reference (res_desc); /* Result descriptor */
- if (ret_desc) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
- }
-
- /* Set the return object and exit */
-
- *return_desc = ret_desc;
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_monadic2
- *
- * PARAMETERS: Opcode - The opcode to be executed
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute Type 2 monadic operator with numeric operand:
- * Deref_of_op, Ref_of_op, Size_of_op, Type_op, Increment_op,
- * Decrement_op, LNot_op,
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_monadic2 (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc)
-{
- acpi_operand_object **operand = &walk_state->operands[0];
- acpi_operand_object *tmp_desc;
- acpi_operand_object *ret_desc = NULL;
- acpi_status status = AE_OK;
- u32 type;
- acpi_integer value;
-
-
- FUNCTION_TRACE_PTR ("Ex_monadic2", WALK_OPERANDS);
-
-
- /* Get the operand and decode the opcode */
-
- switch (opcode) {
-
- /* Def_lNot := LNot_op Operand */
-
- case AML_LNOT_OP:
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- ret_desc->integer.value = !obj_desc->integer.value;
- break;
-
-
- /* Def_decrement := Decrement_op Target */
- /* Def_increment := Increment_op Target */
-
- case AML_DECREMENT_OP:
- case AML_INCREMENT_OP:
-
- /*
- * Since we are expecting an Reference on the top of the stack, it
- * can be either an Node or an internal object.
- *
- * TBD: [Future] This may be the prototype code for all cases where
- * a Reference is expected!! 10/99
- */
- if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
- ret_desc = obj_desc;
- }
-
- else {
- /*
- * Duplicate the Reference in a new object so that we can resolve it
- * without destroying the original Reference object
- */
- ret_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- ret_desc->reference.opcode = obj_desc->reference.opcode;
- ret_desc->reference.offset = obj_desc->reference.offset;
- ret_desc->reference.object = obj_desc->reference.object;
- }
-
-
- /*
- * Convert the Ret_desc Reference to a Number
- * (This deletes the original Ret_desc)
- */
- status = acpi_ex_resolve_operands (AML_LNOT_OP, &ret_desc, walk_state);
- if (ACPI_FAILURE (status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s: bad operand(s) %s\n",
- acpi_ps_get_opcode_name (opcode), acpi_format_exception(status)));
-
- goto cleanup;
- }
-
- /* Do the actual increment or decrement */
-
- if (AML_INCREMENT_OP == opcode) {
- ret_desc->integer.value++;
- }
- else {
- ret_desc->integer.value--;
- }
-
- /* Store the result back in the original descriptor */
-
- status = acpi_ex_store (ret_desc, obj_desc, walk_state);
-
- /* Objdesc was just deleted (because it is an Reference) */
-
- obj_desc = NULL;
-
- break;
-
-
- /* Def_object_type := Object_type_op Source_object */
-
- case AML_TYPE_OP:
-
- if (INTERNAL_TYPE_REFERENCE == obj_desc->common.type) {
- /*
- * Not a Name -- an indirect name pointer would have
- * been converted to a direct name pointer in Resolve_operands
- */
- switch (obj_desc->reference.opcode) {
- case AML_ZERO_OP:
- case AML_ONE_OP:
- case AML_ONES_OP:
- case AML_REVISION_OP:
-
- /* Constants are of type Number */
-
- type = ACPI_TYPE_INTEGER;
- break;
-
-
- case AML_DEBUG_OP:
-
- /* Per 1.0b spec, Debug object is of type Debug_object */
-
- type = ACPI_TYPE_DEBUG_OBJECT;
- break;
-
-
- case AML_INDEX_OP:
-
- /* Get the type of this reference (index into another object) */
-
- type = obj_desc->reference.target_type;
- if (type == ACPI_TYPE_PACKAGE) {
- /*
- * The main object is a package, we want to get the type
- * of the individual package element that is referenced by
- * the index.
- */
- type = (*(obj_desc->reference.where))->common.type;
- }
-
- break;
-
-
- case AML_LOCAL_OP:
- case AML_ARG_OP:
-
- type = acpi_ds_method_data_get_type (obj_desc->reference.opcode,
- obj_desc->reference.offset, walk_state);
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_monadic2/Type_op: Internal error - Unknown Reference subtype %X\n",
- obj_desc->reference.opcode));
- status = AE_AML_INTERNAL;
- goto cleanup;
- }
- }
-
- else {
- /*
- * It's not a Reference, so it must be a direct name pointer.
- */
- type = acpi_ns_get_type ((acpi_namespace_node *) obj_desc);
-
- /* Convert internal types to external types */
-
- switch (type) {
- case INTERNAL_TYPE_REGION_FIELD:
- case INTERNAL_TYPE_BANK_FIELD:
- case INTERNAL_TYPE_INDEX_FIELD:
-
- type = ACPI_TYPE_FIELD_UNIT;
- }
-
- }
-
- /* Allocate a descriptor to hold the type. */
-
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- ret_desc->integer.value = type;
- break;
-
-
- /* Def_size_of := Size_of_op Source_object */
-
- case AML_SIZE_OF_OP:
-
- if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
- obj_desc = acpi_ns_get_attached_object ((acpi_namespace_node *) obj_desc);
- }
-
- if (!obj_desc) {
- value = 0;
- }
-
- else {
- switch (obj_desc->common.type) {
-
- case ACPI_TYPE_BUFFER:
-
- value = obj_desc->buffer.length;
- break;
-
-
- case ACPI_TYPE_STRING:
-
- value = obj_desc->string.length;
- break;
-
-
- case ACPI_TYPE_PACKAGE:
-
- value = obj_desc->package.count;
- break;
-
- case INTERNAL_TYPE_REFERENCE:
-
- value = 4;
- break;
-
- default:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Not Buf/Str/Pkg - found type %X\n",
- obj_desc->common.type));
- status = AE_AML_OPERAND_TYPE;
- goto cleanup;
- }
- }
-
- /*
- * Now that we have the size of the object, create a result
- * object to hold the value
- */
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- ret_desc->integer.value = value;
- break;
-
-
- /* Def_ref_of := Ref_of_op Source_object */
-
- case AML_REF_OF_OP:
-
- status = acpi_ex_get_object_reference (obj_desc, &ret_desc, walk_state);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
- break;
-
-
- /* Def_deref_of := Deref_of_op Obj_reference */
-
- case AML_DEREF_OF_OP:
-
-
- /* Check for a method local or argument */
-
- if (!VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
- /*
- * Must resolve/dereference the local/arg reference first
- */
- switch (obj_desc->reference.opcode) {
- /* Set Obj_desc to the value of the local/arg */
-
- case AML_LOCAL_OP:
- case AML_ARG_OP:
-
- acpi_ds_method_data_get_value (obj_desc->reference.opcode,
- obj_desc->reference.offset, walk_state, &tmp_desc);
-
- /*
- * Delete our reference to the input object and
- * point to the object just retrieved
- */
- acpi_ut_remove_reference (obj_desc);
- obj_desc = tmp_desc;
- break;
-
- default:
-
- /* Index op - handled below */
- break;
- }
- }
-
-
- /* Obj_desc may have changed from the code above */
-
- if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
- /* Get the actual object from the Node (This is the dereference) */
-
- ret_desc = ((acpi_namespace_node *) obj_desc)->object;
-
- /* Returning a pointer to the object, add another reference! */
-
- acpi_ut_add_reference (ret_desc);
- }
-
- else {
- /*
- * This must be a reference object produced by the Index
- * ASL operation -- check internal opcode
- */
- if ((obj_desc->reference.opcode != AML_INDEX_OP) &&
- (obj_desc->reference.opcode != AML_REF_OF_OP)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown opcode in ref(%p) - %X\n",
- obj_desc, obj_desc->reference.opcode));
-
- status = AE_TYPE;
- goto cleanup;
- }
-
-
- switch (obj_desc->reference.opcode) {
- case AML_INDEX_OP:
-
- /*
- * Supported target types for the Index operator are
- * 1) A Buffer
- * 2) A Package
- */
- if (obj_desc->reference.target_type == ACPI_TYPE_BUFFER_FIELD) {
- /*
- * The target is a buffer, we must create a new object that
- * contains one element of the buffer, the element pointed
- * to by the index.
- *
- * NOTE: index into a buffer is NOT a pointer to a
- * sub-buffer of the main buffer, it is only a pointer to a
- * single element (byte) of the buffer!
- */
- ret_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
- if (!ret_desc) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
-
- tmp_desc = obj_desc->reference.object;
- ret_desc->integer.value =
- tmp_desc->buffer.pointer[obj_desc->reference.offset];
-
- /* TBD: [Investigate] (see below) Don't add an additional
- * ref!
- */
- }
-
- else if (obj_desc->reference.target_type == ACPI_TYPE_PACKAGE) {
- /*
- * The target is a package, we want to return the referenced
- * element of the package. We must add another reference to
- * this object, however.
- */
- ret_desc = *(obj_desc->reference.where);
- if (!ret_desc) {
- /*
- * We can't return a NULL dereferenced value. This is
- * an uninitialized package element and is thus a
- * severe error.
- */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "NULL package element obj %p\n",
- obj_desc));
- status = AE_AML_UNINITIALIZED_ELEMENT;
- goto cleanup;
- }
-
- acpi_ut_add_reference (ret_desc);
- }
-
- else {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Target_type %X in obj %p\n",
- obj_desc->reference.target_type, obj_desc));
- status = AE_AML_OPERAND_TYPE;
- goto cleanup;
- }
-
- break;
-
-
- case AML_REF_OF_OP:
-
- ret_desc = obj_desc->reference.object;
-
- /* Add another reference to the object! */
-
- acpi_ut_add_reference (ret_desc);
- break;
- }
- }
-
- break;
-
-
- default:
-
- REPORT_ERROR (("Acpi_ex_monadic2: Unknown monadic opcode %X\n",
- opcode));
- status = AE_AML_BAD_OPCODE;
- goto cleanup;
- }
-
-
-cleanup:
-
- if (obj_desc) {
- acpi_ut_remove_reference (obj_desc);
- }
-
- /* Delete return object on error */
-
- if (ACPI_FAILURE (status) &&
- (ret_desc)) {
- acpi_ut_remove_reference (ret_desc);
- ret_desc = NULL;
- }
-
- *return_desc = ret_desc;
- return_ACPI_STATUS (status);
-}
-
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exoparg1.c linux/drivers/acpi/executer/exoparg1.c
--- v2.4.13/linux/drivers/acpi/executer/exoparg1.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/acpi/executer/exoparg1.c Wed Oct 24 14:06:22 2001
@@ -0,0 +1,878 @@
+
+/******************************************************************************
+ *
+ * Module Name: exoparg1 - AML execution - opcodes with 1 argument
+ * $Revision: 120 $
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000, 2001 R. Byron Moore
+ *
+ * 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 "acpi.h"
+#include "acparser.h"
+#include "acdispat.h"
+#include "acinterp.h"
+#include "amlcode.h"
+#include "acnamesp.h"
+
+
+#define _COMPONENT ACPI_EXECUTER
+ MODULE_NAME ("exoparg1")
+
+
+/*!
+ * Naming convention for AML interpreter execution routines.
+ *
+ * The routines that begin execution of AML opcodes are named with a common
+ * convention based upon the number of arguments, the number of target operands,
+ * and whether or not a value is returned:
+ *
+ * AcpiExOpcode_xA_yT_zR
+ *
+ * Where:
+ *
+ * xA - ARGUMENTS: The number of arguments (input operands) that are
+ * required for this opcode type (1 through 6 args).
+ * yT - TARGETS: The number of targets (output operands) that are required
+ * for this opcode type (0, 1, or 2 targets).
+ * zR - RETURN VALUE: Indicates whether this opcode type returns a value
+ * as the function return (0 or 1).
+ *
+ * The AcpiExOpcode* functions are called via the Dispatcher component with
+ * fully resolved operands.
+!*/
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_1A_0T_0R
+ *
+ * PARAMETERS: Walk_state - Current state (contains AML opcode)
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute Type 1 monadic operator with numeric operand on
+ * object stack
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_1A_0T_0R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_1A_0T_0R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /* Examine the opcode */
+
+ switch (walk_state->opcode) {
+ case AML_RELEASE_OP: /* Release (Mutex_object) */
+
+ status = acpi_ex_release_mutex (operand[0], walk_state);
+ break;
+
+
+ case AML_RESET_OP: /* Reset (Event_object) */
+
+ status = acpi_ex_system_reset_event (operand[0]);
+ break;
+
+
+ case AML_SIGNAL_OP: /* Signal (Event_object) */
+
+ status = acpi_ex_system_signal_event (operand[0]);
+ break;
+
+
+ case AML_SLEEP_OP: /* Sleep (Msec_time) */
+
+ acpi_ex_system_do_suspend ((u32) operand[0]->integer.value);
+ break;
+
+
+ case AML_STALL_OP: /* Stall (Usec_time) */
+
+ acpi_ex_system_do_stall ((u32) operand[0]->integer.value);
+ break;
+
+
+ case AML_UNLOAD_OP: /* Unload (Handle) */
+
+ status = acpi_ex_unload_table (operand[0]);
+ break;
+
+
+ default: /* Unknown opcode */
+
+ REPORT_ERROR (("Acpi_ex_opcode_1A_0T_0R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ break;
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_1A_1T_0R
+ *
+ * PARAMETERS: Walk_state - Current state (contains AML opcode)
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with one argument, one target, and no
+ * return value.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_1A_1T_0R (
+ acpi_walk_state *walk_state)
+{
+ acpi_status status = AE_OK;
+ acpi_operand_object **operand = &walk_state->operands[0];
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_1A_1T_0R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ switch (walk_state->opcode) {
+
+ case AML_LOAD_OP:
+
+ status = acpi_ex_load_op (operand[0], operand[1]);
+ break;
+
+ default: /* Unknown opcode */
+
+ REPORT_ERROR (("Acpi_ex_opcode_1A_1T_0R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ }
+
+
+cleanup:
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_1A_1T_1R
+ *
+ * PARAMETERS: Walk_state - Current state (contains AML opcode)
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with one argument, one target, and a
+ * return value.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_1A_1T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_status status = AE_OK;
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc = NULL;
+ acpi_operand_object *return_desc2 = NULL;
+ u32 temp32;
+ u32 i;
+ u32 j;
+ acpi_integer digit;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_1A_1T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /* Create a return object of type Integer for most opcodes */
+
+ switch (walk_state->opcode) {
+ case AML_BIT_NOT_OP:
+ case AML_FIND_SET_LEFT_BIT_OP:
+ case AML_FIND_SET_RIGHT_BIT_OP:
+ case AML_FROM_BCD_OP:
+ case AML_TO_BCD_OP:
+ case AML_COND_REF_OF_OP:
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ break;
+ }
+
+
+ switch (walk_state->opcode) {
+
+ case AML_BIT_NOT_OP: /* Not (Operand, Result) */
+
+ return_desc->integer.value = ~operand[0]->integer.value;
+ break;
+
+
+ case AML_FIND_SET_LEFT_BIT_OP: /* Find_set_left_bit (Operand, Result) */
+
+
+ return_desc->integer.value = operand[0]->integer.value;
+
+ /*
+ * Acpi specification describes Integer type as a little
+ * endian unsigned value, so this boundary condition is valid.
+ */
+ for (temp32 = 0; return_desc->integer.value && temp32 < ACPI_INTEGER_BIT_SIZE; ++temp32) {
+ return_desc->integer.value >>= 1;
+ }
+
+ return_desc->integer.value = temp32;
+ break;
+
+
+ case AML_FIND_SET_RIGHT_BIT_OP: /* Find_set_right_bit (Operand, Result) */
+
+
+ return_desc->integer.value = operand[0]->integer.value;
+
+ /*
+ * The Acpi specification describes Integer type as a little
+ * endian unsigned value, so this boundary condition is valid.
+ */
+ for (temp32 = 0; return_desc->integer.value && temp32 < ACPI_INTEGER_BIT_SIZE; ++temp32) {
+ return_desc->integer.value <<= 1;
+ }
+
+ /* Since the bit position is one-based, subtract from 33 (65) */
+
+ return_desc->integer.value = temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - temp32;
+ break;
+
+
+ case AML_FROM_BCD_OP: /* From_bcd (BCDValue, Result) */
+
+ /*
+ * The 64-bit ACPI integer can hold 16 4-bit BCD integers
+ */
+ return_desc->integer.value = 0;
+ for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) {
+ /* Get one BCD digit */
+
+ digit = (acpi_integer) ((operand[0]->integer.value >> (i * 4)) & 0xF);
+
+ /* Check the range of the digit */
+
+ if (digit > 9) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "BCD digit too large: %d\n",
+ (u32) digit));
+ status = AE_AML_NUMERIC_OVERFLOW;
+ goto cleanup;
+ }
+
+ if (digit > 0) {
+ /* Sum into the result with the appropriate power of 10 */
+
+ for (j = 0; j < i; j++) {
+ digit *= 10;
+ }
+
+ return_desc->integer.value += digit;
+ }
+ }
+ break;
+
+
+ case AML_TO_BCD_OP: /* To_bcd (Operand, Result) */
+
+ if (operand[0]->integer.value > ACPI_MAX_BCD_VALUE) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "BCD overflow: %8.8X%8.8X\n",
+ HIDWORD(operand[0]->integer.value), LODWORD(operand[0]->integer.value)));
+ status = AE_AML_NUMERIC_OVERFLOW;
+ goto cleanup;
+ }
+
+ return_desc->integer.value = 0;
+ for (i = 0; i < ACPI_MAX_BCD_DIGITS; i++) {
+ /* Divide by nth factor of 10 */
+
+ temp32 = 0;
+ digit = operand[0]->integer.value;
+ for (j = 0; j < i; j++) {
+ acpi_ut_short_divide (&digit, 10, &digit, &temp32);
+ }
+
+ /* Create the BCD digit from the remainder above */
+
+ if (digit > 0) {
+ return_desc->integer.value += (temp32 << (i * 4));
+ }
+ }
+ break;
+
+
+ case AML_COND_REF_OF_OP: /* Cond_ref_of (Source_object, Result) */
+
+ /*
+ * This op is a little strange because the internal return value is
+ * different than the return value stored in the result descriptor
+ * (There are really two return values)
+ */
+ if ((acpi_namespace_node *) operand[0] == acpi_gbl_root_node) {
+ /*
+ * This means that the object does not exist in the namespace,
+ * return FALSE
+ */
+ return_desc->integer.value = 0;
+
+ /*
+ * Must delete the result descriptor since there is no reference
+ * being returned
+ */
+ acpi_ut_remove_reference (operand[1]);
+ goto cleanup;
+ }
+
+ /* Get the object reference and store it */
+
+ status = acpi_ex_get_object_reference (operand[0], &return_desc2, walk_state);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+
+ status = acpi_ex_store (return_desc2, operand[1], walk_state);
+
+ /* The object exists in the namespace, return TRUE */
+
+ return_desc->integer.value = ACPI_INTEGER_MAX;
+ goto cleanup;
+ break;
+
+
+ case AML_STORE_OP: /* Store (Source, Target) */
+
+ /*
+ * A store operand is typically a number, string, buffer or lvalue
+ * Be careful about deleting the source object,
+ * since the object itself may have been stored.
+ */
+ status = acpi_ex_store (operand[0], operand[1], walk_state);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+
+ /*
+ * Normally, we would remove a reference on the Operand[0] parameter;
+ * But since it is being used as the internal return object
+ * (meaning we would normally increment it), the two cancel out,
+ * and we simply don't do anything.
+ */
+ walk_state->result_obj = operand[0];
+ walk_state->operands[0] = NULL; /* Prevent deletion */
+ return_ACPI_STATUS (status);
+ break;
+
+
+ /*
+ * ACPI 2.0 Opcodes
+ */
+ case AML_COPY_OP: /* Copy (Source, Target) */
+
+ status = AE_NOT_IMPLEMENTED;
+ goto cleanup;
+ break;
+
+
+ case AML_TO_DECSTRING_OP: /* To_decimal_string (Data, Result) */
+
+ status = acpi_ex_convert_to_string (operand[0], &return_desc, 10, ACPI_UINT32_MAX, walk_state);
+ break;
+
+
+ case AML_TO_HEXSTRING_OP: /* To_hex_string (Data, Result) */
+
+ status = acpi_ex_convert_to_string (operand[0], &return_desc, 16, ACPI_UINT32_MAX, walk_state);
+ break;
+
+
+ case AML_TO_BUFFER_OP: /* To_buffer (Data, Result) */
+
+ status = acpi_ex_convert_to_buffer (operand[0], &return_desc, walk_state);
+ break;
+
+
+ case AML_TO_INTEGER_OP: /* To_integer (Data, Result) */
+
+ status = acpi_ex_convert_to_integer (operand[0], &return_desc, walk_state);
+ break;
+
+
+ /*
+ * These are two obsolete opcodes
+ */
+ case AML_SHIFT_LEFT_BIT_OP: /* Shift_left_bit (Source, Bit_num) */
+ case AML_SHIFT_RIGHT_BIT_OP: /* Shift_right_bit (Source, Bit_num) */
+
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s is obsolete and not implemented\n",
+ acpi_ps_get_opcode_name (walk_state->opcode)));
+ status = AE_SUPPORT;
+ goto cleanup;
+ break;
+
+
+ default: /* Unknown opcode */
+
+ REPORT_ERROR (("Acpi_ex_opcode_1A_1T_1R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ }
+
+
+ /*
+ * Store the return value computed above into the target object
+ */
+ status = acpi_ex_store (return_desc, operand[1], walk_state);
+
+
+cleanup:
+
+ walk_state->result_obj = return_desc;
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_1A_0T_1R
+ *
+ * PARAMETERS: Walk_state - Current state (contains AML opcode)
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with one argument, no target, and a return value
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_1A_0T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *temp_desc;
+ acpi_operand_object *return_desc = NULL;
+ acpi_status status = AE_OK;
+ u32 type;
+ acpi_integer value;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_1A_0T_0R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /* Get the operand and decode the opcode */
+
+ switch (walk_state->opcode) {
+
+ case AML_LNOT_OP: /* LNot (Operand) */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ return_desc->integer.value = !operand[0]->integer.value;
+ break;
+
+
+ case AML_DECREMENT_OP: /* Decrement (Operand) */
+ case AML_INCREMENT_OP: /* Increment (Operand) */
+
+ /*
+ * Since we are expecting a Reference operand, it
+ * can be either a Node or an internal object.
+ */
+ return_desc = operand[0];
+ if (VALID_DESCRIPTOR_TYPE (operand[0], ACPI_DESC_TYPE_INTERNAL)) {
+ /* Internal reference object - prevent deletion */
+
+ acpi_ut_add_reference (return_desc);
+ }
+
+ /*
+ * Convert the Return_desc Reference to a Number
+ * (This removes a reference on the Return_desc object)
+ */
+ status = acpi_ex_resolve_operands (AML_LNOT_OP, &return_desc, walk_state);
+ if (ACPI_FAILURE (status)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s: bad operand(s) %s\n",
+ acpi_ps_get_opcode_name (walk_state->opcode), acpi_format_exception(status)));
+
+ goto cleanup;
+ }
+
+ /*
+ * Return_desc is now guaranteed to be an Integer object
+ * Do the actual increment or decrement
+ */
+ if (AML_INCREMENT_OP == walk_state->opcode) {
+ return_desc->integer.value++;
+ }
+ else {
+ return_desc->integer.value--;
+ }
+
+ /* Store the result back in the original descriptor */
+
+ status = acpi_ex_store (return_desc, operand[0], walk_state);
+ break;
+
+
+ case AML_TYPE_OP: /* Object_type (Source_object) */
+
+ if (INTERNAL_TYPE_REFERENCE == operand[0]->common.type) {
+ /*
+ * Not a Name -- an indirect name pointer would have
+ * been converted to a direct name pointer in Resolve_operands
+ */
+ switch (operand[0]->reference.opcode) {
+ case AML_ZERO_OP:
+ case AML_ONE_OP:
+ case AML_ONES_OP:
+ case AML_REVISION_OP:
+
+ /* Constants are of type Integer */
+
+ type = ACPI_TYPE_INTEGER;
+ break;
+
+
+ case AML_DEBUG_OP:
+
+ /* Per 1.0b spec, Debug object is of type "Debug_object" */
+
+ type = ACPI_TYPE_DEBUG_OBJECT;
+ break;
+
+
+ case AML_INDEX_OP:
+
+ /* Get the type of this reference (index into another object) */
+
+ type = operand[0]->reference.target_type;
+ if (type == ACPI_TYPE_PACKAGE) {
+ /*
+ * The main object is a package, we want to get the type
+ * of the individual package element that is referenced by
+ * the index.
+ */
+ type = (*(operand[0]->reference.where))->common.type;
+ }
+
+ break;
+
+
+ case AML_LOCAL_OP:
+ case AML_ARG_OP:
+
+ type = acpi_ds_method_data_get_type (operand[0]->reference.opcode,
+ operand[0]->reference.offset, walk_state);
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_1A_0T_1R/Type_op: Internal error - Unknown Reference subtype %X\n",
+ operand[0]->reference.opcode));
+ status = AE_AML_INTERNAL;
+ goto cleanup;
+ }
+ }
+
+ else {
+ /*
+ * It's not a Reference, so it must be a direct name pointer.
+ */
+ type = acpi_ns_get_type ((acpi_namespace_node *) operand[0]);
+
+ /* Convert internal types to external types */
+
+ switch (type) {
+ case INTERNAL_TYPE_REGION_FIELD:
+ case INTERNAL_TYPE_BANK_FIELD:
+ case INTERNAL_TYPE_INDEX_FIELD:
+
+ type = ACPI_TYPE_FIELD_UNIT;
+ }
+
+ }
+
+ /* Allocate a descriptor to hold the type. */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ return_desc->integer.value = type;
+ break;
+
+
+ case AML_SIZE_OF_OP: /* Size_of (Source_object) */
+
+ temp_desc = operand[0];
+ if (VALID_DESCRIPTOR_TYPE (operand[0], ACPI_DESC_TYPE_NAMED)) {
+ temp_desc = acpi_ns_get_attached_object ((acpi_namespace_node *) operand[0]);
+ }
+
+ if (!temp_desc) {
+ value = 0;
+ }
+
+ else {
+ switch (temp_desc->common.type) {
+ case ACPI_TYPE_BUFFER:
+ value = temp_desc->buffer.length;
+ break;
+
+ case ACPI_TYPE_STRING:
+ value = temp_desc->string.length;
+ break;
+
+ case ACPI_TYPE_PACKAGE:
+ value = temp_desc->package.count;
+ break;
+
+ case INTERNAL_TYPE_REFERENCE:
+
+ /* TBD: this must be a reference to a buf/str/pkg?? */
+
+ value = 4;
+ break;
+
+ default:
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Not Buf/Str/Pkg - found type %X\n",
+ temp_desc->common.type));
+ status = AE_AML_OPERAND_TYPE;
+ goto cleanup;
+ }
+ }
+
+ /*
+ * Now that we have the size of the object, create a result
+ * object to hold the value
+ */
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ return_desc->integer.value = value;
+ break;
+
+
+ case AML_REF_OF_OP: /* Ref_of (Source_object) */
+
+ status = acpi_ex_get_object_reference (operand[0], &return_desc, walk_state);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+ break;
+
+
+ case AML_DEREF_OF_OP: /* Deref_of (Obj_reference) */
+
+ /* Check for a method local or argument */
+
+ if (!VALID_DESCRIPTOR_TYPE (operand[0], ACPI_DESC_TYPE_NAMED)) {
+ /*
+ * Must resolve/dereference the local/arg reference first
+ */
+ switch (operand[0]->reference.opcode) {
+ /* Set Operand[0] to the value of the local/arg */
+
+ case AML_LOCAL_OP:
+ case AML_ARG_OP:
+
+ acpi_ds_method_data_get_value (operand[0]->reference.opcode,
+ operand[0]->reference.offset, walk_state, &temp_desc);
+
+ /*
+ * Delete our reference to the input object and
+ * point to the object just retrieved
+ */
+ acpi_ut_remove_reference (operand[0]);
+ operand[0] = temp_desc;
+ break;
+
+ default:
+
+ /* Index op - handled below */
+ break;
+ }
+ }
+
+
+ /* Operand[0] may have changed from the code above */
+
+ if (VALID_DESCRIPTOR_TYPE (operand[0], ACPI_DESC_TYPE_NAMED)) {
+ /* Get the actual object from the Node (This is the dereference) */
+
+ return_desc = ((acpi_namespace_node *) operand[0])->object;
+
+ /* Returning a pointer to the object, add another reference! */
+
+ acpi_ut_add_reference (return_desc);
+ }
+
+ else {
+ /*
+ * This must be a reference object produced by the Index
+ * ASL operation -- check internal opcode
+ */
+ if ((operand[0]->reference.opcode != AML_INDEX_OP) &&
+ (operand[0]->reference.opcode != AML_REF_OF_OP)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown opcode in ref(%p) - %X\n",
+ operand[0], operand[0]->reference.opcode));
+
+ status = AE_TYPE;
+ goto cleanup;
+ }
+
+
+ switch (operand[0]->reference.opcode) {
+ case AML_INDEX_OP:
+
+ /*
+ * Supported target types for the Index operator are
+ * 1) A Buffer
+ * 2) A Package
+ */
+ if (operand[0]->reference.target_type == ACPI_TYPE_BUFFER_FIELD) {
+ /*
+ * The target is a buffer, we must create a new object that
+ * contains one element of the buffer, the element pointed
+ * to by the index.
+ *
+ * NOTE: index into a buffer is NOT a pointer to a
+ * sub-buffer of the main buffer, it is only a pointer to a
+ * single element (byte) of the buffer!
+ */
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ temp_desc = operand[0]->reference.object;
+ return_desc->integer.value =
+ temp_desc->buffer.pointer[operand[0]->reference.offset];
+
+ /* TBD: [Investigate] (see below) Don't add an additional
+ * ref!
+ */
+ }
+
+ else if (operand[0]->reference.target_type == ACPI_TYPE_PACKAGE) {
+ /*
+ * The target is a package, we want to return the referenced
+ * element of the package. We must add another reference to
+ * this object, however.
+ */
+ return_desc = *(operand[0]->reference.where);
+ if (!return_desc) {
+ /*
+ * We can't return a NULL dereferenced value. This is
+ * an uninitialized package element and is thus a
+ * severe error.
+ */
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "NULL package element obj %p\n",
+ operand[0]));
+ status = AE_AML_UNINITIALIZED_ELEMENT;
+ goto cleanup;
+ }
+
+ acpi_ut_add_reference (return_desc);
+ }
+
+ else {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Target_type %X in obj %p\n",
+ operand[0]->reference.target_type, operand[0]));
+ status = AE_AML_OPERAND_TYPE;
+ goto cleanup;
+ }
+
+ break;
+
+
+ case AML_REF_OF_OP:
+
+ return_desc = operand[0]->reference.object;
+
+ /* Add another reference to the object! */
+
+ acpi_ut_add_reference (return_desc);
+ break;
+ }
+ }
+
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_1A_0T_1R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ }
+
+
+cleanup:
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ walk_state->result_obj = return_desc;
+ return_ACPI_STATUS (status);
+}
+
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exoparg2.c linux/drivers/acpi/executer/exoparg2.c
--- v2.4.13/linux/drivers/acpi/executer/exoparg2.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/acpi/executer/exoparg2.c Wed Oct 24 14:06:22 2001
@@ -0,0 +1,564 @@
+/******************************************************************************
+ *
+ * Module Name: exoparg2 - AML execution - opcodes with 2 arguments
+ * $Revision: 97 $
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000, 2001 R. Byron Moore
+ *
+ * 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 "acpi.h"
+#include "acparser.h"
+#include "acnamesp.h"
+#include "acinterp.h"
+#include "acevents.h"
+#include "amlcode.h"
+#include "acdispat.h"
+
+
+#define _COMPONENT ACPI_EXECUTER
+ MODULE_NAME ("exoparg2")
+
+
+/*!
+ * Naming convention for AML interpreter execution routines.
+ *
+ * The routines that begin execution of AML opcodes are named with a common
+ * convention based upon the number of arguments, the number of target operands,
+ * and whether or not a value is returned:
+ *
+ * AcpiExOpcode_xA_yT_zR
+ *
+ * Where:
+ *
+ * xA - ARGUMENTS: The number of arguments (input operands) that are
+ * required for this opcode type (1 through 6 args).
+ * yT - TARGETS: The number of targets (output operands) that are required
+ * for this opcode type (0, 1, or 2 targets).
+ * zR - RETURN VALUE: Indicates whether this opcode type returns a value
+ * as the function return (0 or 1).
+ *
+ * The AcpiExOpcode* functions are called via the Dispatcher component with
+ * fully resolved operands.
+!*/
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_2A_0T_0R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with two arguments, no target, and no return
+ * value.
+ *
+ * ALLOCATION: Deletes both operands
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_2A_0T_0R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_namespace_node *node;
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_2A_0T_0R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /* Examine the opcode */
+
+ switch (walk_state->opcode) {
+
+ case AML_NOTIFY_OP: /* Notify (Notify_object, Notify_value) */
+
+ /* The first operand is a namespace node */
+
+ node = (acpi_namespace_node *) operand[0];
+
+ /* The node must refer to a device or thermal zone */
+
+ if (node && operand[1]) /* TBD: is this check necessary? */ {
+ switch (node->type) {
+ case ACPI_TYPE_DEVICE:
+ case ACPI_TYPE_THERMAL:
+
+ /*
+ * Dispatch the notify to the appropriate handler
+ * NOTE: the request is queued for execution after this method
+ * completes. The notify handlers are NOT invoked synchronously
+ * from this thread -- because handlers may in turn run other
+ * control methods.
+ */
+ status = acpi_ev_queue_notify_request (node,
+ (u32) operand[1]->integer.value);
+ break;
+
+ default:
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type %X\n",
+ node->type));
+
+ status = AE_AML_OPERAND_TYPE;
+ break;
+ }
+ }
+ break;
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_2A_0T_0R: Unknown opcode %X\n", walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_2A_2T_1R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute a dyadic operator (2 operands) with 2 output targets
+ * and one implicit return value.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_2A_2T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc1 = NULL;
+ acpi_operand_object *return_desc2 = NULL;
+ acpi_status status;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_2A_2T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /*
+ * Execute the opcode
+ */
+ switch (walk_state->opcode) {
+ case AML_DIVIDE_OP: /* Divide (Dividend, Divisor, Remainder_result Quotient_result) */
+
+ return_desc1 = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc1) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ return_desc2 = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc2) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /* Quotient to Return_desc1, remainder to Return_desc2 */
+
+ status = acpi_ut_divide (&operand[0]->integer.value, &operand[1]->integer.value,
+ &return_desc1->integer.value, &return_desc2->integer.value);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_2A_2T_1R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ break;
+ }
+
+
+ /* Store the results to the target reference operands */
+
+ status = acpi_ex_store (return_desc2, operand[2], walk_state);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+
+ status = acpi_ex_store (return_desc1, operand[3], walk_state);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+
+ /* Return the remainder */
+
+ walk_state->result_obj = return_desc1;
+
+
+cleanup:
+ /*
+ * Since the remainder is not returned indirectly, remove a reference to
+ * it. Only the quotient is returned indirectly.
+ */
+ acpi_ut_remove_reference (return_desc2);
+
+ if (ACPI_FAILURE (status)) {
+ /* Delete the return object */
+
+ acpi_ut_remove_reference (return_desc1);
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_2A_1T_1R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with two arguments, one target, and a return
+ * value.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_2A_1T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc = NULL;
+ acpi_operand_object *temp_desc;
+ u32 index;
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_2A_1T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /*
+ * Execute the opcode
+ */
+ if (walk_state->op_info->flags & AML_MATH) {
+ /* All simple math opcodes (add, etc.) */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ return_desc->integer.value = acpi_ex_do_math_op (walk_state->opcode,
+ operand[0]->integer.value,
+ operand[1]->integer.value);
+ goto store_result_to_target;
+ }
+
+
+ switch (walk_state->opcode) {
+ case AML_MOD_OP: /* Mod (Dividend, Divisor, Remainder_result (ACPI 2.0) */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /* Return_desc will contain the remainder */
+
+ status = acpi_ut_divide (&operand[0]->integer.value, &operand[1]->integer.value,
+ NULL, &return_desc->integer.value);
+
+ break;
+
+
+ case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */
+
+ /*
+ * Convert the second operand if necessary. The first operand
+ * determines the type of the second operand, (See the Data Types
+ * section of the ACPI specification.) Both object types are
+ * guaranteed to be either Integer/String/Buffer by the operand
+ * resolution mechanism above.
+ */
+ switch (operand[0]->common.type) {
+ case ACPI_TYPE_INTEGER:
+ status = acpi_ex_convert_to_integer (operand[1], &operand[1], walk_state);
+ break;
+
+ case ACPI_TYPE_STRING:
+ status = acpi_ex_convert_to_string (operand[1], &operand[1], 16, ACPI_UINT32_MAX, walk_state);
+ break;
+
+ case ACPI_TYPE_BUFFER:
+ status = acpi_ex_convert_to_buffer (operand[1], &operand[1], walk_state);
+ break;
+
+ default:
+ status = AE_AML_INTERNAL;
+ }
+
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+
+ /*
+ * Both operands are now known to be the same object type
+ * (Both are Integer, String, or Buffer), and we can now perform the
+ * concatenation.
+ */
+ status = acpi_ex_do_concatenate (operand[0], operand[1], &return_desc, walk_state);
+ break;
+
+
+ case AML_TO_STRING_OP: /* To_string (Buffer, Length, Result) (ACPI 2.0) */
+
+ status = acpi_ex_convert_to_string (operand[0], &return_desc, 16,
+ (u32) operand[1]->integer.value, walk_state);
+ break;
+
+
+ case AML_CONCAT_RES_OP: /* Concatenate_res_template (Buffer, Buffer, Result) (ACPI 2.0) */
+
+ status = AE_NOT_IMPLEMENTED;
+ break;
+
+
+ case AML_INDEX_OP: /* Index (Source Index Result) */
+
+ /* Create the internal return object */
+
+ return_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REFERENCE);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ index = (u32) operand[1]->integer.value;
+
+ /*
+ * At this point, the Source operand is either a Package or a Buffer
+ */
+ if (operand[0]->common.type == ACPI_TYPE_PACKAGE) {
+ /* Object to be indexed is a Package */
+
+ if (index >= operand[0]->package.count) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Index value beyond package end\n"));
+ status = AE_AML_PACKAGE_LIMIT;
+ goto cleanup;
+ }
+
+ if ((operand[2]->common.type == INTERNAL_TYPE_REFERENCE) &&
+ (operand[2]->reference.opcode == AML_ZERO_OP)) {
+ /*
+ * There is no actual result descriptor (the Zero_op Result
+ * descriptor is a placeholder), so just delete the placeholder and
+ * return a reference to the package element
+ */
+ acpi_ut_remove_reference (operand[2]);
+ }
+
+ else {
+ /*
+ * Each element of the package is an internal object. Get the one
+ * we are after.
+ */
+ temp_desc = operand[0]->package.elements [index];
+ return_desc->reference.opcode = AML_INDEX_OP;
+ return_desc->reference.target_type = temp_desc->common.type;
+ return_desc->reference.object = temp_desc;
+
+ status = acpi_ex_store (return_desc, operand[2], walk_state);
+ return_desc->reference.object = NULL;
+ }
+
+ /*
+ * The local return object must always be a reference to the package element,
+ * not the element itself.
+ */
+ return_desc->reference.opcode = AML_INDEX_OP;
+ return_desc->reference.target_type = ACPI_TYPE_PACKAGE;
+ return_desc->reference.where = &operand[0]->package.elements [index];
+ }
+
+ else {
+ /* Object to be indexed is a Buffer */
+
+ if (index >= operand[0]->buffer.length) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Index value beyond end of buffer\n"));
+ status = AE_AML_BUFFER_LIMIT;
+ goto cleanup;
+ }
+
+ return_desc->reference.opcode = AML_INDEX_OP;
+ return_desc->reference.target_type = ACPI_TYPE_BUFFER_FIELD;
+ return_desc->reference.object = operand[0];
+ return_desc->reference.offset = index;
+
+ status = acpi_ex_store (return_desc, operand[2], walk_state);
+ }
+
+ walk_state->result_obj = return_desc;
+ goto cleanup;
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_2A_1T_1R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ break;
+ }
+
+
+store_result_to_target:
+
+ if (ACPI_SUCCESS (status)) {
+ /*
+ * Store the result of the operation (which is now in Return_desc) into
+ * the Target descriptor.
+ */
+ status = acpi_ex_store (return_desc, operand[2], walk_state);
+ if (ACPI_FAILURE (status)) {
+ goto cleanup;
+ }
+
+ walk_state->result_obj = return_desc;
+ }
+
+
+cleanup:
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_2A_0T_1R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with 2 arguments, no target, and a return value
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_2A_0T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc = NULL;
+ acpi_status status = AE_OK;
+ u8 logical_result = FALSE;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_2A_0T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ /* Create the internal return object */
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /*
+ * Execute the Opcode
+ */
+ if (walk_state->op_info->flags & AML_LOGICAL) /* Logical_op (Operand0, Operand1) */ {
+ logical_result = acpi_ex_do_logical_op (walk_state->opcode,
+ operand[0]->integer.value,
+ operand[1]->integer.value);
+ goto store_logical_result;
+ }
+
+
+ switch (walk_state->opcode) {
+ case AML_ACQUIRE_OP: /* Acquire (Mutex_object, Timeout) */
+
+ status = acpi_ex_acquire_mutex (operand[1], operand[0], walk_state);
+ if (status == AE_TIME) {
+ logical_result = TRUE; /* TRUE = Acquire timed out */
+ status = AE_OK;
+ }
+ break;
+
+
+ case AML_WAIT_OP: /* Wait (Event_object, Timeout) */
+
+ status = acpi_ex_system_wait_event (operand[1], operand[0]);
+ if (status == AE_TIME) {
+ logical_result = TRUE; /* TRUE, Wait timed out */
+ status = AE_OK;
+ }
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_2A_0T_1R: Unknown opcode %X\n", walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ break;
+ }
+
+
+store_logical_result:
+ /*
+ * Set return value to according to Logical_result. logical TRUE (all ones)
+ * Default is FALSE (zero)
+ */
+ if (logical_result) {
+ return_desc->integer.value = ACPI_INTEGER_MAX;
+ }
+
+ walk_state->result_obj = return_desc;
+
+
+cleanup:
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ return_ACPI_STATUS (status);
+}
+
+
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exoparg3.c linux/drivers/acpi/executer/exoparg3.c
--- v2.4.13/linux/drivers/acpi/executer/exoparg3.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/acpi/executer/exoparg3.c Wed Oct 24 14:06:22 2001
@@ -0,0 +1,235 @@
+
+/******************************************************************************
+ *
+ * Module Name: exoparg3 - AML execution - opcodes with 3 arguments
+ * $Revision: 3 $
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000, 2001 R. Byron Moore
+ *
+ * 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 "acpi.h"
+#include "acinterp.h"
+#include "acparser.h"
+#include "amlcode.h"
+
+
+#define _COMPONENT ACPI_EXECUTER
+ MODULE_NAME ("exoparg3")
+
+
+/*!
+ * Naming convention for AML interpreter execution routines.
+ *
+ * The routines that begin execution of AML opcodes are named with a common
+ * convention based upon the number of arguments, the number of target operands,
+ * and whether or not a value is returned:
+ *
+ * AcpiExOpcode_xA_yT_zR
+ *
+ * Where:
+ *
+ * xA - ARGUMENTS: The number of arguments (input operands) that are
+ * required for this opcode type (1 through 6 args).
+ * yT - TARGETS: The number of targets (output operands) that are required
+ * for this opcode type (0, 1, or 2 targets).
+ * zR - RETURN VALUE: Indicates whether this opcode type returns a value
+ * as the function return (0 or 1).
+ *
+ * The AcpiExOpcode* functions are called via the Dispatcher component with
+ * fully resolved operands.
+!*/
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_3A_0T_0R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute Triadic operator (3 operands)
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_3A_0T_0R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ ACPI_SIGNAL_FATAL_INFO *fatal;
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_3A_0T_0R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ switch (walk_state->opcode) {
+
+ case AML_FATAL_OP: /* Fatal (Fatal_type Fatal_code Fatal_arg) */
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
+ "Fatal_op: Type %x Code %x Arg %x <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
+ (u32) operand[0]->integer.value, (u32) operand[1]->integer.value,
+ (u32) operand[2]->integer.value));
+
+
+ fatal = ACPI_MEM_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO));
+ if (fatal) {
+ fatal->type = (u32) operand[0]->integer.value;
+ fatal->code = (u32) operand[1]->integer.value;
+ fatal->argument = (u32) operand[2]->integer.value;
+ }
+
+ /*
+ * Always signal the OS!
+ */
+ acpi_os_signal (ACPI_SIGNAL_FATAL, fatal);
+
+ /* Might return while OS is shutting down, just continue */
+
+ ACPI_MEM_FREE (fatal);
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_3A_0T_0R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ break;
+ }
+
+
+cleanup:
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_3A_1T_1R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute Triadic operator (3 operands)
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_3A_1T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc = NULL;
+ char *buffer;
+ acpi_status status = AE_OK;
+ u32 index;
+ u32 length;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_3A_1T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ switch (walk_state->opcode) {
+ case AML_MID_OP: /* Mid (Source[0], Index[1], Length[2], Result[3]) */
+
+ /*
+ * Create the return object. The Source operand is guaranteed to be
+ * either a String or a Buffer, so just use its type.
+ */
+ return_desc = acpi_ut_create_internal_object (operand[0]->common.type);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+ }
+
+ /* Get the Integer values from the objects */
+
+ index = (u32) operand[1]->integer.value;
+ length = (u32) operand[2]->integer.value;
+
+ /*
+ * If the index is beyond the length of the String/Buffer, or if the
+ * requested length is zero, return a zero-length String/Buffer
+ */
+ if ((index < operand[0]->string.length) &&
+ (length > 0)) {
+ /* Truncate request if larger than the actual String/Buffer */
+
+ if ((index + length) >
+ operand[0]->string.length) {
+ length = operand[0]->string.length - index;
+ }
+
+ /* Allocate a new buffer for the String/Buffer */
+
+ buffer = ACPI_MEM_CALLOCATE (length + 1);
+ if (!buffer) {
+ return (AE_NO_MEMORY);
+ }
+
+ /* Copy the portion requested */
+
+ MEMCPY (buffer, operand[0]->string.pointer + index,
+ length);
+
+ /* Set the length of the new String/Buffer */
+
+ return_desc->string.pointer = buffer;
+ return_desc->string.length = length;
+ }
+
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_3A_0T_0R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ break;
+ }
+
+ /* Store the result in the target */
+
+ status = acpi_ex_store (return_desc, operand[3], walk_state);
+
+cleanup:
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ /* Set the return object and exit */
+
+ walk_state->result_obj = return_desc;
+ return_ACPI_STATUS (status);
+}
+
+
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exoparg6.c linux/drivers/acpi/executer/exoparg6.c
--- v2.4.13/linux/drivers/acpi/executer/exoparg6.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/acpi/executer/exoparg6.c Wed Oct 24 14:06:22 2001
@@ -0,0 +1,276 @@
+
+/******************************************************************************
+ *
+ * Module Name: exoparg6 - AML execution - opcodes with 6 arguments
+ * $Revision: 4 $
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000, 2001 R. Byron Moore
+ *
+ * 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 "acpi.h"
+#include "acinterp.h"
+#include "acparser.h"
+#include "amlcode.h"
+
+
+#define _COMPONENT ACPI_EXECUTER
+ MODULE_NAME ("exoparg6")
+
+
+/*!
+ * Naming convention for AML interpreter execution routines.
+ *
+ * The routines that begin execution of AML opcodes are named with a common
+ * convention based upon the number of arguments, the number of target operands,
+ * and whether or not a value is returned:
+ *
+ * AcpiExOpcode_xA_yT_zR
+ *
+ * Where:
+ *
+ * xA - ARGUMENTS: The number of arguments (input operands) that are
+ * required for this opcode type (1 through 6 args).
+ * yT - TARGETS: The number of targets (output operands) that are required
+ * for this opcode type (0, 1, or 2 targets).
+ * zR - RETURN VALUE: Indicates whether this opcode type returns a value
+ * as the function return (0 or 1).
+ *
+ * The AcpiExOpcode* functions are called via the Dispatcher component with
+ * fully resolved operands.
+!*/
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_do_match
+ *
+ * PARAMETERS: Match_op - The AML match operand
+ * Package_value - Value from the target package
+ * Match_value - Value to be matched
+ *
+ * RETURN: TRUE if the match is successful, FALSE otherwise
+ *
+ * DESCRIPTION: Implements the low-level match for the ASL Match operator
+ *
+ ******************************************************************************/
+
+u8
+acpi_ex_do_match (
+ u32 match_op,
+ acpi_integer package_value,
+ acpi_integer match_value)
+{
+
+ switch (match_op) {
+ case MATCH_MTR: /* always true */
+
+ break;
+
+
+ case MATCH_MEQ: /* true if equal */
+
+ if (package_value != match_value) {
+ return (FALSE);
+ }
+ break;
+
+
+ case MATCH_MLE: /* true if less than or equal */
+
+ if (package_value > match_value) {
+ return (FALSE);
+ }
+ break;
+
+
+ case MATCH_MLT: /* true if less than */
+
+ if (package_value >= match_value) {
+ return (FALSE);
+ }
+ break;
+
+
+ case MATCH_MGE: /* true if greater than or equal */
+
+ if (package_value < match_value) {
+ return (FALSE);
+ }
+ break;
+
+
+ case MATCH_MGT: /* true if greater than */
+
+ if (package_value <= match_value) {
+ return (FALSE);
+ }
+ break;
+
+
+ default: /* undefined */
+
+ return (FALSE);
+ }
+
+
+ return TRUE;
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_opcode_6A_0T_1R
+ *
+ * PARAMETERS: Walk_state - Current walk state
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Execute opcode with 6 arguments, no target, and a return value
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_opcode_6A_0T_1R (
+ acpi_walk_state *walk_state)
+{
+ acpi_operand_object **operand = &walk_state->operands[0];
+ acpi_operand_object *return_desc = NULL;
+ acpi_status status = AE_OK;
+ u32 index;
+ acpi_operand_object *this_element;
+
+
+ FUNCTION_TRACE_STR ("Ex_opcode_6A_0T_1R", acpi_ps_get_opcode_name (walk_state->opcode));
+
+
+ switch (walk_state->opcode) {
+ case AML_MATCH_OP:
+ /*
+ * Match (Search_package[0], Match_op1[1], Match_object1[2],
+ * Match_op2[3], Match_object2[4], Start_index[5])
+ */
+
+ /* Validate match comparison sub-opcodes */
+
+ if ((operand[1]->integer.value > MAX_MATCH_OPERATOR) ||
+ (operand[3]->integer.value > MAX_MATCH_OPERATOR)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "operation encoding out of range\n"));
+ status = AE_AML_OPERAND_VALUE;
+ goto cleanup;
+ }
+
+ index = (u32) operand[5]->integer.value;
+ if (index >= (u32) operand[0]->package.count) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Index beyond package end\n"));
+ status = AE_AML_PACKAGE_LIMIT;
+ goto cleanup;
+ }
+
+ return_desc = acpi_ut_create_internal_object (ACPI_TYPE_INTEGER);
+ if (!return_desc) {
+ status = AE_NO_MEMORY;
+ goto cleanup;
+
+ }
+
+ /* Default return value if no match found */
+
+ return_desc->integer.value = ACPI_INTEGER_MAX;
+
+ /*
+ * Examine each element until a match is found. Within the loop,
+ * "continue" signifies that the current element does not match
+ * and the next should be examined.
+ * Upon finding a match, the loop will terminate via "break" at
+ * the bottom. If it terminates "normally", Match_value will be -1
+ * (its initial value) indicating that no match was found. When
+ * returned as a Number, this will produce the Ones value as specified.
+ */
+ for ( ; index < operand[0]->package.count; index++) {
+ this_element = operand[0]->package.elements[index];
+
+ /*
+ * Treat any NULL or non-numeric elements as non-matching.
+ * TBD [Unhandled] - if an element is a Name,
+ * should we examine its value?
+ */
+ if (!this_element ||
+ this_element->common.type != ACPI_TYPE_INTEGER) {
+ continue;
+ }
+
+
+ /*
+ * Within these switch statements:
+ * "break" (exit from the switch) signifies a match;
+ * "continue" (proceed to next iteration of enclosing
+ * "for" loop) signifies a non-match.
+ */
+ if (!acpi_ex_do_match ((u32) operand[1]->integer.value,
+ this_element->integer.value, operand[2]->integer.value)) {
+ continue;
+ }
+
+
+ if (!acpi_ex_do_match ((u32) operand[3]->integer.value,
+ this_element->integer.value, operand[4]->integer.value)) {
+ continue;
+ }
+
+ /* Match found: Index is the return value */
+
+ return_desc->integer.value = index;
+ break;
+ }
+
+ break;
+
+
+ case AML_LOAD_TABLE_OP:
+
+ status = AE_NOT_IMPLEMENTED;
+ goto cleanup;
+ break;
+
+
+ default:
+
+ REPORT_ERROR (("Acpi_ex_opcode_3A_0T_0R: Unknown opcode %X\n",
+ walk_state->opcode));
+ status = AE_AML_BAD_OPCODE;
+ goto cleanup;
+ break;
+ }
+
+
+ walk_state->result_obj = return_desc;
+
+
+cleanup:
+
+ /* Delete return object on error */
+
+ if (ACPI_FAILURE (status)) {
+ acpi_ut_remove_reference (return_desc);
+ }
+
+ return_ACPI_STATUS (status);
+}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exprep.c linux/drivers/acpi/executer/exprep.c
--- v2.4.13/linux/drivers/acpi/executer/exprep.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exprep.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exprep - ACPI AML (p-code) execution - field prep utilities
- * $Revision: 95 $
+ * $Revision: 99 $
*
*****************************************************************************/
@@ -243,7 +243,7 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ex_prep_region_field_value
+ * FUNCTION: Acpi_ex_prep_field_value
*
* PARAMETERS: Node - Owning Node
* Region_node - Region in which field is being defined
@@ -253,280 +253,128 @@
*
* RETURN: Status
*
- * DESCRIPTION: Construct an acpi_operand_object of type Def_field and
+ * DESCRIPTION: Construct an acpi_operand_object of type Def_field and
* connect it to the parent Node.
*
******************************************************************************/
acpi_status
-acpi_ex_prep_region_field_value (
- acpi_namespace_node *node,
- acpi_handle region_node,
- u8 field_flags,
- u32 field_bit_position,
- u32 field_bit_length)
+acpi_ex_prep_field_value (
+ ACPI_CREATE_FIELD_INFO *info)
{
acpi_operand_object *obj_desc;
u32 type;
acpi_status status;
- FUNCTION_TRACE ("Ex_prep_region_field_value");
+ FUNCTION_TRACE ("Ex_prep_field_value");
/* Parameter validation */
- if (!region_node) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Region_node\n"));
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
+ if (info->field_type != INTERNAL_TYPE_INDEX_FIELD) {
+ if (!info->region_node) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Region_node\n"));
+ return_ACPI_STATUS (AE_AML_NO_OPERAND);
+ }
+
+ type = acpi_ns_get_type (info->region_node);
+ if (type != ACPI_TYPE_REGION) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X %s\n",
+ type, acpi_ut_get_type_name (type)));
- type = acpi_ns_get_type (region_node);
- if (type != ACPI_TYPE_REGION) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X %s\n",
- type, acpi_ut_get_type_name (type)));
- return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
+ return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
+ }
}
- /* Allocate a new object */
+ /* Allocate a new region object */
- obj_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_REGION_FIELD);
+ obj_desc = acpi_ut_create_internal_object (info->field_type);
if (!obj_desc) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
-
- /* Obj_desc and Region valid */
-
- DUMP_OPERANDS ((acpi_operand_object **) &node, IMODE_EXECUTE,
- "Ex_prep_region_field_value", 1, "case Region_field");
- DUMP_OPERANDS ((acpi_operand_object **) ®ion_node, IMODE_EXECUTE,
- "Ex_prep_region_field_value", 1, "case Region_field");
-
/* Initialize areas of the object that are common to all fields */
- status = acpi_ex_prep_common_field_object (obj_desc, field_flags,
- field_bit_position, field_bit_length);
+ status = acpi_ex_prep_common_field_object (obj_desc, info->field_flags,
+ info->field_bit_position, info->field_bit_length);
if (ACPI_FAILURE (status)) {
+ acpi_ut_delete_object_desc (obj_desc);
return_ACPI_STATUS (status);
}
- /* Initialize areas of the object that are specific to this field type */
-
- obj_desc->field.region_obj = acpi_ns_get_attached_object (region_node);
-
- /* An additional reference for the container */
+ /* Initialize areas of the object that are specific to the field type */
- acpi_ut_add_reference (obj_desc->field.region_obj);
+ switch (info->field_type) {
+ case INTERNAL_TYPE_REGION_FIELD:
+ obj_desc->field.region_obj = acpi_ns_get_attached_object (info->region_node);
- /* Debug info */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Bitoff=%X Off=%X Gran=%X Region %p\n",
- obj_desc->field.start_field_bit_offset, obj_desc->field.base_byte_offset,
- obj_desc->field.access_bit_width, obj_desc->field.region_obj));
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "set Named_obj %p (%4.4s) val = %p\n",
- node, &(node->name), obj_desc));
+ /* An additional reference for the container */
+ acpi_ut_add_reference (obj_desc->field.region_obj);
- /*
- * Store the constructed descriptor (Obj_desc) into the parent Node,
- * preserving the current type of that Named_obj.
- */
- status = acpi_ns_attach_object (node, obj_desc, (u8) acpi_ns_get_type (node));
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_prep_bank_field_value
- *
- * PARAMETERS: Node - Owning Node
- * Region_node - Region in which field is being defined
- * Bank_register_node - Bank selection register node
- * Bank_val - Value to store in selection register
- * Field_flags - Access, Lock_rule, and Update_rule
- * Field_bit_position - Field start position
- * Field_bit_length - Field length in number of bits
- *
- * RETURN: Status
- *
- * DESCRIPTION: Construct an object of type Bank_field and attach it to the
- * parent Node.
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_prep_bank_field_value (
- acpi_namespace_node *node,
- acpi_namespace_node *region_node,
- acpi_namespace_node *bank_register_node,
- u32 bank_val,
- u8 field_flags,
- u32 field_bit_position,
- u32 field_bit_length)
-{
- acpi_operand_object *obj_desc;
- u32 type;
- acpi_status status;
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Region_field: Bitoff=%X Off=%X Gran=%X Region %p\n",
+ obj_desc->field.start_field_bit_offset, obj_desc->field.base_byte_offset,
+ obj_desc->field.access_bit_width, obj_desc->field.region_obj));
+ break;
- FUNCTION_TRACE ("Ex_prep_bank_field_value");
+ case INTERNAL_TYPE_BANK_FIELD:
+ obj_desc->bank_field.value = info->bank_value;
+ obj_desc->bank_field.region_obj = acpi_ns_get_attached_object (info->region_node);
+ obj_desc->bank_field.bank_register_obj = acpi_ns_get_attached_object (info->register_node);
- /* Parameter validation */
+ /* An additional reference for the attached objects */
- if (!region_node) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Region_node\n"));
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
+ acpi_ut_add_reference (obj_desc->bank_field.region_obj);
+ acpi_ut_add_reference (obj_desc->bank_field.bank_register_obj);
- type = acpi_ns_get_type (region_node);
- if (type != ACPI_TYPE_REGION) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X %s\n",
- type, acpi_ut_get_type_name (type)));
- return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
- }
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Bank Field: Bit_off=%X Off=%X Gran=%X Region %p Bank_reg %p\n",
+ obj_desc->bank_field.start_field_bit_offset, obj_desc->bank_field.base_byte_offset,
+ obj_desc->field.access_bit_width, obj_desc->bank_field.region_obj,
+ obj_desc->bank_field.bank_register_obj));
+ break;
- /* Allocate a new object */
- obj_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_BANK_FIELD);
- if (!obj_desc) {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
+ case INTERNAL_TYPE_INDEX_FIELD:
- /* Obj_desc and Region valid */
+ obj_desc->index_field.index_obj = acpi_ns_get_attached_object (info->register_node);
+ obj_desc->index_field.data_obj = acpi_ns_get_attached_object (info->data_register_node);
+ obj_desc->index_field.value = (u32) (info->field_bit_position /
+ obj_desc->field.access_bit_width);
+
+ if (!obj_desc->index_field.data_obj || !obj_desc->index_field.index_obj) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null Index Object\n"));
+ return_ACPI_STATUS (AE_AML_INTERNAL);
+ }
- DUMP_OPERANDS ((acpi_operand_object **) &node, IMODE_EXECUTE,
- "Ex_prep_bank_field_value", 1, "case Bank_field");
- DUMP_OPERANDS ((acpi_operand_object **) ®ion_node, IMODE_EXECUTE,
- "Ex_prep_bank_field_value", 1, "case Bank_field");
+ /* An additional reference for the attached objects */
- /* Initialize areas of the object that are common to all fields */
+ acpi_ut_add_reference (obj_desc->index_field.data_obj);
+ acpi_ut_add_reference (obj_desc->index_field.index_obj);
- status = acpi_ex_prep_common_field_object (obj_desc, field_flags,
- field_bit_position, field_bit_length);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Index_field: bitoff=%X off=%X gran=%X Index %p Data %p\n",
+ obj_desc->index_field.start_field_bit_offset, obj_desc->index_field.base_byte_offset,
+ obj_desc->field.access_bit_width, obj_desc->index_field.index_obj,
+ obj_desc->index_field.data_obj));
+ break;
}
- /* Initialize areas of the object that are specific to this field type */
-
- obj_desc->bank_field.value = bank_val;
- obj_desc->bank_field.region_obj = acpi_ns_get_attached_object (region_node);
- obj_desc->bank_field.bank_register_obj = acpi_ns_get_attached_object (bank_register_node);
-
- /* An additional reference for the attached objects */
-
- acpi_ut_add_reference (obj_desc->bank_field.region_obj);
- acpi_ut_add_reference (obj_desc->bank_field.bank_register_obj);
-
- /* Debug info */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Bit_off=%X Off=%X Gran=%X Region %p Bank_reg %p\n",
- obj_desc->bank_field.start_field_bit_offset, obj_desc->bank_field.base_byte_offset,
- obj_desc->field.access_bit_width, obj_desc->bank_field.region_obj,
- obj_desc->bank_field.bank_register_obj));
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Set Named_obj %p (%4.4s) val=%p\n",
- node, &(node->name), obj_desc));
-
-
/*
* Store the constructed descriptor (Obj_desc) into the parent Node,
* preserving the current type of that Named_obj.
*/
- status = acpi_ns_attach_object (node, obj_desc, (u8) acpi_ns_get_type (node));
- return_ACPI_STATUS (status);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_prep_index_field_value
- *
- * PARAMETERS: Node - Owning Node
- * Index_reg - Index register
- * Data_reg - Data register
- * Field_flags - Access, Lock_rule, and Update_rule
- * Field_bit_position - Field start position
- * Field_bit_length - Field length in number of bits
- *
- * RETURN: Status
- *
- * DESCRIPTION: Construct an acpi_operand_object of type Index_field and
- * connect it to the parent Node.
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_prep_index_field_value (
- acpi_namespace_node *node,
- acpi_namespace_node *index_reg,
- acpi_namespace_node *data_reg,
- u8 field_flags,
- u32 field_bit_position,
- u32 field_bit_length)
-{
- acpi_operand_object *obj_desc;
- acpi_status status;
-
-
- FUNCTION_TRACE ("Ex_prep_index_field_value");
-
-
- /* Parameter validation */
-
- if (!index_reg || !data_reg) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null handle\n"));
- return_ACPI_STATUS (AE_AML_NO_OPERAND);
- }
-
- /* Allocate a new object descriptor */
-
- obj_desc = acpi_ut_create_internal_object (INTERNAL_TYPE_INDEX_FIELD);
- if (!obj_desc) {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- /* Initialize areas of the object that are common to all fields */
-
- status = acpi_ex_prep_common_field_object (obj_desc, field_flags,
- field_bit_position, field_bit_length);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
- /* Initialize areas of the object that are specific to this field type */
-
- obj_desc->index_field.data_obj = acpi_ns_get_attached_object (data_reg);
- obj_desc->index_field.index_obj = acpi_ns_get_attached_object (index_reg);
- obj_desc->index_field.value = (u32) (field_bit_position /
- obj_desc->field.access_bit_width);
-
- /* An additional reference for the attached objects */
-
- acpi_ut_add_reference (obj_desc->index_field.data_obj);
- acpi_ut_add_reference (obj_desc->index_field.index_obj);
-
- /* Debug info */
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "bitoff=%X off=%X gran=%X Index %p Data %p\n",
- obj_desc->index_field.start_field_bit_offset, obj_desc->index_field.base_byte_offset,
- obj_desc->field.access_bit_width, obj_desc->index_field.index_obj,
- obj_desc->index_field.data_obj));
+ status = acpi_ns_attach_object (info->field_node, obj_desc,
+ (u8) acpi_ns_get_type (info->field_node));
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "set Named_obj %p (%4.4s) val = %p\n",
- node, &(node->name), obj_desc));
+ info->field_node, (char*)&(info->field_node->name), obj_desc));
+ /* Remove local reference to the object */
- /*
- * Store the constructed descriptor (Obj_desc) into the parent Node,
- * preserving the current type of that Named_obj.
- */
- status = acpi_ns_attach_object (node, obj_desc, (u8) acpi_ns_get_type (node));
+ acpi_ut_remove_reference (obj_desc);
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exregion.c linux/drivers/acpi/executer/exregion.c
--- v2.4.13/linux/drivers/acpi/executer/exregion.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exregion.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exregion - ACPI default Op_region (address space) handlers
- * $Revision: 58 $
+ * $Revision: 61 $
*
*****************************************************************************/
@@ -47,7 +47,7 @@
* Value - Pointer to in or out value
* Handler_context - Pointer to Handler's context
* Region_context - Pointer to context specific to the
- * accessed region
+ * accessed region
*
* RETURN: Status
*
@@ -143,7 +143,7 @@
((acpi_integer) address - (acpi_integer) mem_info->mapped_physical_address);
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "IO %d (%d width) Address=%8.8lX%8.8lX\n", function, bit_width,
+ "System_memory %d (%d width) Address=%8.8X%8.8X\n", function, bit_width,
HIDWORD (address), LODWORD (address)));
/* Perform the memory read or write */
@@ -207,7 +207,7 @@
* Value - Pointer to in or out value
* Handler_context - Pointer to Handler's context
* Region_context - Pointer to context specific to the
- * accessed region
+ * accessed region
*
* RETURN: Status
*
@@ -231,7 +231,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "IO %d (%d width) Address=%8.8lX%8.8lX\n", function, bit_width,
+ "System_iO %d (%d width) Address=%8.8X%8.8X\n", function, bit_width,
HIDWORD (address), LODWORD (address)));
/* Decode the function parameter */
@@ -270,7 +270,7 @@
* Value - Pointer to in or out value
* Handler_context - Pointer to Handler's context
* Region_context - Pointer to context specific to the
- * accessed region
+ * accessed region
*
* RETURN: Status
*
@@ -311,7 +311,7 @@
pci_register = (u16) address;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "IO %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n",
+ "Pci_config %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n",
function, bit_width, pci_id->segment, pci_id->bus, pci_id->device,
pci_id->function, pci_register));
@@ -335,6 +335,80 @@
status = AE_BAD_PARAMETER;
break;
}
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_cmos_space_handler
+ *
+ * PARAMETERS: Function - Read or Write operation
+ * Address - Where in the space to read or write
+ * Bit_width - Field width in bits (8, 16, or 32)
+ * Value - Pointer to in or out value
+ * Handler_context - Pointer to Handler's context
+ * Region_context - Pointer to context specific to the
+ * accessed region
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Handler for the CMOS address space (Op Region)
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_cmos_space_handler (
+ u32 function,
+ ACPI_PHYSICAL_ADDRESS address,
+ u32 bit_width,
+ u32 *value,
+ void *handler_context,
+ void *region_context)
+{
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE ("Ex_cmos_space_handler");
+
+
+ return_ACPI_STATUS (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ex_pci_bar_space_handler
+ *
+ * PARAMETERS: Function - Read or Write operation
+ * Address - Where in the space to read or write
+ * Bit_width - Field width in bits (8, 16, or 32)
+ * Value - Pointer to in or out value
+ * Handler_context - Pointer to Handler's context
+ * Region_context - Pointer to context specific to the
+ * accessed region
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Handler for the PCI Bar_target address space (Op Region)
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ex_pci_bar_space_handler (
+ u32 function,
+ ACPI_PHYSICAL_ADDRESS address,
+ u32 bit_width,
+ u32 *value,
+ void *handler_context,
+ void *region_context)
+{
+ acpi_status status = AE_OK;
+
+
+ FUNCTION_TRACE ("Ex_pci_bar_space_handler");
+
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exresnte.c linux/drivers/acpi/executer/exresnte.c
--- v2.4.13/linux/drivers/acpi/executer/exresnte.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exresnte.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresnte - AML Interpreter object resolution
- * $Revision: 41 $
+ * $Revision: 43 $
*
*****************************************************************************/
@@ -43,14 +43,15 @@
*
* FUNCTION: Acpi_ex_resolve_node_to_value
*
- * PARAMETERS: Stack_ptr - Pointer to a location on a stack that contains
- * a pointer to a Node
- * Walk_state - Current state
+ * PARAMETERS: Object_ptr - Pointer to a location that contains
+ * a pointer to a NS node, and will recieve a
+ * pointer to the resolved object.
+ * Walk_state - Current state. Valid only if executing AML
+ * code. NULL if simply resolving an object
*
* RETURN: Status
*
- * DESCRIPTION: Resolve a Namespace node (AKA a "direct name pointer") to
- * a valued object
+ * DESCRIPTION: Resolve a Namespace node to a valued object
*
* Note: for some of the data types, the pointer attached to the Node
* can be either a pointer to an actual internal object or a pointer into the
@@ -66,12 +67,12 @@
acpi_status
acpi_ex_resolve_node_to_value (
- acpi_namespace_node **stack_ptr,
+ acpi_namespace_node **object_ptr,
acpi_walk_state *walk_state)
{
acpi_status status = AE_OK;
- acpi_operand_object *val_desc;
+ acpi_operand_object *source_desc;
acpi_operand_object *obj_desc = NULL;
acpi_namespace_node *node;
acpi_object_type8 entry_type;
@@ -85,12 +86,12 @@
* The stack pointer points to a acpi_namespace_node (Node). Get the
* object that is attached to the Node.
*/
- node = *stack_ptr;
- val_desc = acpi_ns_get_attached_object (node);
+ node = *object_ptr;
+ source_desc = acpi_ns_get_attached_object (node);
entry_type = acpi_ns_get_type ((acpi_handle) node);
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p Val_desc=%p Type=%X\n",
- node, val_desc, entry_type));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p Source_desc=%p Type=%X\n",
+ node, source_desc, entry_type));
/*
@@ -103,7 +104,7 @@
return_ACPI_STATUS (AE_OK);
}
- if (!val_desc) {
+ if (!source_desc) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No object attached to node %p\n",
node));
return_ACPI_STATUS (AE_AML_NO_OPERAND);
@@ -117,60 +118,60 @@
case ACPI_TYPE_PACKAGE:
- if (ACPI_TYPE_PACKAGE != val_desc->common.type) {
+ if (ACPI_TYPE_PACKAGE != source_desc->common.type) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Package, type %s\n",
- acpi_ut_get_type_name (val_desc->common.type)));
+ acpi_ut_get_type_name (source_desc->common.type)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Return an additional reference to the object */
- obj_desc = val_desc;
+ obj_desc = source_desc;
acpi_ut_add_reference (obj_desc);
break;
case ACPI_TYPE_BUFFER:
- if (ACPI_TYPE_BUFFER != val_desc->common.type) {
+ if (ACPI_TYPE_BUFFER != source_desc->common.type) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Buffer, type %s\n",
- acpi_ut_get_type_name (val_desc->common.type)));
+ acpi_ut_get_type_name (source_desc->common.type)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Return an additional reference to the object */
- obj_desc = val_desc;
+ obj_desc = source_desc;
acpi_ut_add_reference (obj_desc);
break;
case ACPI_TYPE_STRING:
- if (ACPI_TYPE_STRING != val_desc->common.type) {
+ if (ACPI_TYPE_STRING != source_desc->common.type) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a String, type %s\n",
- acpi_ut_get_type_name (val_desc->common.type)));
+ acpi_ut_get_type_name (source_desc->common.type)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Return an additional reference to the object */
- obj_desc = val_desc;
+ obj_desc = source_desc;
acpi_ut_add_reference (obj_desc);
break;
case ACPI_TYPE_INTEGER:
- if (ACPI_TYPE_INTEGER != val_desc->common.type) {
+ if (ACPI_TYPE_INTEGER != source_desc->common.type) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Object not a Integer, type %s\n",
- acpi_ut_get_type_name (val_desc->common.type)));
+ acpi_ut_get_type_name (source_desc->common.type)));
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Return an additional reference to the object */
- obj_desc = val_desc;
+ obj_desc = source_desc;
acpi_ut_add_reference (obj_desc);
break;
@@ -180,10 +181,10 @@
case INTERNAL_TYPE_BANK_FIELD:
case INTERNAL_TYPE_INDEX_FIELD:
- ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Node=%p Val_desc=%p Type=%X\n",
- node, val_desc, entry_type));
+ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Field_read Node=%p Source_desc=%p Type=%X\n",
+ node, source_desc, entry_type));
- status = acpi_ex_read_data_from_field (val_desc, &obj_desc);
+ status = acpi_ex_read_data_from_field (source_desc, &obj_desc);
break;
@@ -200,7 +201,7 @@
/* Return an additional reference to the object */
- obj_desc = val_desc;
+ obj_desc = source_desc;
acpi_ut_add_reference (obj_desc);
break;
@@ -222,7 +223,7 @@
*/
case INTERNAL_TYPE_REFERENCE:
- switch (val_desc->reference.opcode) {
+ switch (source_desc->reference.opcode) {
case AML_ZERO_OP:
@@ -241,13 +242,13 @@
case AML_REVISION_OP:
- temp_val = ACPI_CA_VERSION;
+ temp_val = ACPI_CA_SUPPORT_LEVEL;
break;
default:
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported reference opcode %X\n",
- val_desc->reference.opcode));
+ source_desc->reference.opcode));
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
}
@@ -261,9 +262,15 @@
obj_desc->integer.value = temp_val;
- /* Truncate value if we are executing from a 32-bit ACPI table */
-
- acpi_ex_truncate_for32bit_table (obj_desc, walk_state);
+ /*
+ * Truncate value if we are executing from a 32-bit ACPI table
+ * AND actually executing AML code. If we are resolving
+ * an object in the namespace via an external call to the
+ * subsystem, we will have a null Walk_state
+ */
+ if (walk_state) {
+ acpi_ex_truncate_for32bit_table (obj_desc, walk_state);
+ }
break;
@@ -281,7 +288,7 @@
/* Put the object descriptor on the stack */
- *stack_ptr = (void *) obj_desc;
+ *object_ptr = (void *) obj_desc;
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exresolv.c linux/drivers/acpi/executer/exresolv.c
--- v2.4.13/linux/drivers/acpi/executer/exresolv.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exresolv.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresolv - AML Interpreter object resolution
- * $Revision: 99 $
+ * $Revision: 101 $
*
*****************************************************************************/
@@ -131,12 +131,14 @@
(result_desc->integer.value >> obj_desc->buffer_field.start_field_bit_offset) & mask;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "** Read from buffer %p byte %ld bit %d width %d addr %p mask %08lx val %08lx\n",
+ "** Read from buffer %p byte %d bit %d width %d addr %p mask %08X val %8.8X%8.8X\n",
obj_desc->buffer_field.buffer_obj->buffer.pointer,
obj_desc->buffer_field.base_byte_offset,
obj_desc->buffer_field.start_field_bit_offset,
obj_desc->buffer_field.bit_length,
- location, mask, result_desc->integer.value));
+ location, mask,
+ HIDWORD(result_desc->integer.value),
+ LODWORD(result_desc->integer.value)));
return_ACPI_STATUS (AE_OK);
}
@@ -323,7 +325,7 @@
break;
case AML_REVISION_OP:
- obj_desc->integer.value = ACPI_CA_VERSION;
+ obj_desc->integer.value = ACPI_CA_SUPPORT_LEVEL;
break;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exresop.c linux/drivers/acpi/executer/exresop.c
--- v2.4.13/linux/drivers/acpi/executer/exresop.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exresop.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exresop - AML Interpreter operand/object resolution
- * $Revision: 38 $
+ * $Revision: 41 $
*
*****************************************************************************/
@@ -120,7 +120,7 @@
op_info = acpi_ps_get_opcode_info (opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
}
@@ -146,7 +146,7 @@
*/
while (GET_CURRENT_ARG_TYPE (arg_types)) {
if (!stack_ptr || !*stack_ptr) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Internal - null stack entry at %X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Internal - null stack entry at %p\n",
stack_ptr));
return_ACPI_STATUS (AE_AML_INTERNAL);
@@ -183,7 +183,7 @@
* Decode the Reference
*/
op_info = acpi_ps_get_opcode_info (opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exstore.c linux/drivers/acpi/executer/exstore.c
--- v2.4.13/linux/drivers/acpi/executer/exstore.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exstore.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exstore - AML Interpreter object store support
- * $Revision: 148 $
+ * $Revision: 150 $
*
*****************************************************************************/
@@ -42,15 +42,14 @@
*
* FUNCTION: Acpi_ex_store
*
- * PARAMETERS: *Val_desc - Value to be stored
+ * PARAMETERS: *Source_desc - Value to be stored
* *Dest_desc - Where to store it. Must be an NS node
* or an acpi_operand_object of type
- * Reference; if the latter the descriptor
- * will be either reused or deleted.
+ * Reference;
*
* RETURN: Status
*
- * DESCRIPTION: Store the value described by Val_desc into the location
+ * DESCRIPTION: Store the value described by Source_desc into the location
* described by Dest_desc. Called by various interpreter
* functions to store the result of an operation into
* the destination operand.
@@ -59,7 +58,7 @@
acpi_status
acpi_ex_store (
- acpi_operand_object *val_desc,
+ acpi_operand_object *source_desc,
acpi_operand_object *dest_desc,
acpi_walk_state *walk_state)
{
@@ -72,7 +71,7 @@
/* Validate parameters */
- if (!val_desc || !dest_desc) {
+ if (!source_desc || !dest_desc) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Internal - null pointer\n"));
return_ACPI_STATUS (AE_AML_NO_OPERAND);
}
@@ -84,7 +83,7 @@
* Dest is a namespace node,
* Storing an object into a Name "container"
*/
- status = acpi_ex_store_object_to_node (val_desc,
+ status = acpi_ex_store_object_to_node (source_desc,
(acpi_namespace_node *) dest_desc, walk_state);
/* All done, that's it */
@@ -101,7 +100,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Destination is not a Reference_obj [%p]\n", dest_desc));
- DUMP_STACK_ENTRY (val_desc);
+ DUMP_STACK_ENTRY (source_desc);
DUMP_STACK_ENTRY (dest_desc);
DUMP_OPERANDS (&dest_desc, IMODE_EXECUTE, "Ex_store",
2, "Target is not a Reference_obj");
@@ -125,7 +124,7 @@
/* Storing an object into a Name "container" */
- status = acpi_ex_store_object_to_node (val_desc, ref_desc->reference.object,
+ status = acpi_ex_store_object_to_node (source_desc, ref_desc->reference.object,
walk_state);
break;
@@ -134,7 +133,7 @@
/* Storing to an Index (pointer into a packager or buffer) */
- status = acpi_ex_store_object_to_index (val_desc, ref_desc, walk_state);
+ status = acpi_ex_store_object_to_index (source_desc, ref_desc, walk_state);
break;
@@ -144,7 +143,7 @@
/* Store to a method local/arg */
status = acpi_ds_store_object_to_local (ref_desc->reference.opcode,
- ref_desc->reference.offset, val_desc, walk_state);
+ ref_desc->reference.offset, source_desc, walk_state);
break;
@@ -157,39 +156,39 @@
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Write to Debug Object: ****:\n\n"));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "[ACPI Debug] %s: ",
- acpi_ut_get_type_name (val_desc->common.type)));
+ acpi_ut_get_type_name (source_desc->common.type)));
- switch (val_desc->common.type) {
+ switch (source_desc->common.type) {
case ACPI_TYPE_INTEGER:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "0x%X (%d)\n",
- (u32) val_desc->integer.value, (u32) val_desc->integer.value));
+ (u32) source_desc->integer.value, (u32) source_desc->integer.value));
break;
case ACPI_TYPE_BUFFER:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Length 0x%X\n",
- (u32) val_desc->buffer.length));
+ (u32) source_desc->buffer.length));
break;
case ACPI_TYPE_STRING:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%s\n", val_desc->string.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "%s\n", source_desc->string.pointer));
break;
case ACPI_TYPE_PACKAGE:
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "Elements - 0x%X\n",
- (u32) val_desc->package.elements));
+ (u32) source_desc->package.elements));
break;
default:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "@0x%p\n", val_desc));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DEBUG_OBJECT, "@0x%p\n", source_desc));
break;
}
@@ -224,12 +223,6 @@
} /* switch (Ref_desc->Reference.Opcode) */
- /* Always delete the reference descriptor object */
-
- if (ref_desc) {
- acpi_ut_remove_reference (ref_desc);
- }
-
return_ACPI_STATUS (status);
}
@@ -238,7 +231,7 @@
*
* FUNCTION: Acpi_ex_store_object_to_index
*
- * PARAMETERS: *Val_desc - Value to be stored
+ * PARAMETERS: *Source_desc - Value to be stored
* *Node - Named object to receive the value
*
* RETURN: Status
@@ -249,7 +242,7 @@
acpi_status
acpi_ex_store_object_to_index (
- acpi_operand_object *val_desc,
+ acpi_operand_object *source_desc,
acpi_operand_object *dest_desc,
acpi_walk_state *walk_state)
{
@@ -278,7 +271,7 @@
if (dest_desc->reference.target_type == ACPI_TYPE_PACKAGE) {
/*
* The object at *(Dest_desc->Reference.Where) is the
- * element within the package that is to be modified.
+ * element within the package that is to be modified.
*/
obj_desc = *(dest_desc->reference.where);
if (obj_desc) {
@@ -288,16 +281,12 @@
*
* TBD: [Investigate] Should both the src and dest be required
* to be packages?
- * && (Val_desc->Common.Type == ACPI_TYPE_PACKAGE)
+ * && (Source_desc->Common.Type == ACPI_TYPE_PACKAGE)
*/
if (obj_desc->common.type == ACPI_TYPE_PACKAGE) {
- /*
- * Take away the reference for being part of a package and
- * delete
- */
- acpi_ut_remove_reference (obj_desc);
- acpi_ut_remove_reference (obj_desc);
+ /* Take away the reference for being part of a package */
+ acpi_ut_remove_reference (obj_desc);
obj_desc = NULL;
}
}
@@ -307,9 +296,9 @@
* If the Obj_desc is NULL, it means that an uninitialized package
* element has been used as a destination (this is OK), therefore,
* we must create the destination element to match the type of the
- * source element NOTE: Val_desc can be of any type.
+ * source element NOTE: Source_desccan be of any type.
*/
- obj_desc = acpi_ut_create_internal_object (val_desc->common.type);
+ obj_desc = acpi_ut_create_internal_object (source_desc->common.type);
if (!obj_desc) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
@@ -318,29 +307,25 @@
* If the source is a package, copy the source to the new dest
*/
if (ACPI_TYPE_PACKAGE == obj_desc->common.type) {
- status = acpi_ut_copy_ipackage_to_ipackage (val_desc, obj_desc, walk_state);
+ status = acpi_ut_copy_ipackage_to_ipackage (source_desc, obj_desc, walk_state);
if (ACPI_FAILURE (status)) {
acpi_ut_remove_reference (obj_desc);
return_ACPI_STATUS (status);
}
}
- /*
- * Install the new descriptor into the package and add a
- * reference to the newly created descriptor for now being
- * part of the parent package
- */
+ /* Install the new descriptor into the package */
+
*(dest_desc->reference.where) = obj_desc;
- acpi_ut_add_reference (obj_desc);
}
if (ACPI_TYPE_PACKAGE != obj_desc->common.type) {
/*
* The destination element is not a package, so we need to
- * convert the contents of the source (Val_desc) and copy into
+ * convert the contents of the source (Source_desc) and copy into
* the destination (Obj_desc)
*/
- status = acpi_ex_store_object_to_object (val_desc, obj_desc,
+ status = acpi_ex_store_object_to_object (source_desc, obj_desc,
walk_state);
if (ACPI_FAILURE (status)) {
/*
@@ -380,7 +365,7 @@
* The assignment of the individual elements will be slightly
* different for each source type.
*/
- switch (val_desc->common.type) {
+ switch (source_desc->common.type) {
case ACPI_TYPE_INTEGER:
/*
* Type is Integer, assign bytewise
@@ -389,7 +374,7 @@
*/
length = sizeof (acpi_integer);
for (i = length; i != 0; i--) {
- value = (u8)(val_desc->integer.value >> (MUL_8 (i - 1)));
+ value = (u8)(source_desc->integer.value >> (MUL_8 (i - 1)));
obj_desc->buffer.pointer[dest_desc->reference.offset] = value;
}
break;
@@ -400,9 +385,9 @@
* Type is Buffer, the Length is in the structure.
* Just loop through the elements and assign each one in turn.
*/
- length = val_desc->buffer.length;
+ length = source_desc->buffer.length;
for (i = 0; i < length; i++) {
- value = val_desc->buffer.pointer[i];
+ value = source_desc->buffer.pointer[i];
obj_desc->buffer.pointer[dest_desc->reference.offset] = value;
}
break;
@@ -413,9 +398,9 @@
* Type is String, the Length is in the structure.
* Just loop through the elements and assign each one in turn.
*/
- length = val_desc->string.length;
+ length = source_desc->string.length;
for (i = 0; i < length; i++) {
- value = val_desc->string.pointer[i];
+ value = source_desc->string.pointer[i];
obj_desc->buffer.pointer[dest_desc->reference.offset] = value;
}
break;
@@ -427,7 +412,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Source must be Number/Buffer/String type, not %X\n",
- val_desc->common.type));
+ source_desc->common.type));
status = AE_AML_OPERAND_TYPE;
break;
}
@@ -548,6 +533,7 @@
* Source_desc reference count is incremented by Attach_object.
*/
status = acpi_ns_attach_object (node, target_desc, target_type);
+
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"Store %s into %s via Convert/Attach\n",
acpi_ut_get_type_name (target_desc->common.type),
@@ -564,7 +550,6 @@
/* No conversions for all other types. Just attach the source object */
status = acpi_ns_attach_object (node, source_desc, source_desc->common.type);
-
break;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exutils.c linux/drivers/acpi/executer/exutils.c
--- v2.4.13/linux/drivers/acpi/executer/exutils.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exutils.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: exutils - interpreter/scanner utilities
- * $Revision: 84 $
+ * $Revision: 85 $
*
*****************************************************************************/
@@ -265,16 +265,16 @@
*
* FUNCTION: Acpi_ex_digits_needed
*
- * PARAMETERS: val - Value to be represented
- * base - Base of representation
+ * PARAMETERS: Value - Value to be represented
+ * Base - Base of representation
*
- * RETURN: the number of digits needed to represent val in base
+ * RETURN: the number of digits needed to represent Value in Base
*
******************************************************************************/
u32
acpi_ex_digits_needed (
- acpi_integer val,
+ acpi_integer value,
u32 base)
{
u32 num_digits = 0;
@@ -289,9 +289,11 @@
else {
/*
- * acpi_integer is unsigned, which is why we don't worry about the '-'
+ * acpi_integer is unsigned, which is why we don't worry about a '-'
*/
- for (num_digits = 1; (val = ACPI_DIVIDE (val,base)); ++num_digits) { ; }
+ for (num_digits = 1;
+ (acpi_ut_short_divide (&value, base, &value, NULL));
+ ++num_digits) { ; }
}
return_VALUE (num_digits);
@@ -394,17 +396,18 @@
{
u32 count;
u32 digits_needed;
+ u32 remainder;
FUNCTION_ENTRY ();
digits_needed = acpi_ex_digits_needed (value, 10);
- out_string[digits_needed] = '\0';
+ out_string[digits_needed] = 0;
for (count = digits_needed; count > 0; count--) {
- out_string[count-1] = (NATIVE_CHAR) ('0' + (ACPI_MODULO (value, 10)));
- value = ACPI_DIVIDE (value, 10);
+ acpi_ut_short_divide (&value, 10, &value, &remainder);
+ out_string[count-1] = (NATIVE_CHAR) ('0' + remainder);
}
return (AE_OK);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/executer/exxface.c linux/drivers/acpi/executer/exxface.c
--- v2.4.13/linux/drivers/acpi/executer/exxface.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/executer/exxface.c Wed Dec 31 16:00:00 1969
@@ -1,102 +0,0 @@
-
-/******************************************************************************
- *
- * Module Name: exxface - External interpreter interfaces
- * $Revision: 29 $
- *
- *****************************************************************************/
-
-/*
- * Copyright (C) 2000, 2001 R. Byron Moore
- *
- * 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 "acpi.h"
-#include "acinterp.h"
-
-
-#define _COMPONENT ACPI_EXECUTER
- MODULE_NAME ("exxface")
-
-#if 0
-
-/*
- * DEFINE_AML_GLOBALS is tested in amlcode.h
- * to determine whether certain global names should be "defined" or only
- * "declared" in the current compilation. This enhances maintainability
- * by enabling a single header file to embody all knowledge of the names
- * in question.
- *
- * Exactly one module of any executable should #define DEFINE_GLOBALS
- * before #including the header files which use this convention. The
- * names in question will be defined and initialized in that module,
- * and declared as extern in all other modules which #include those
- * header files.
- */
-
-#define DEFINE_AML_GLOBALS
-#include "amlcode.h"
-#include "acparser.h"
-#include "acnamesp.h"
-
-
-/*******************************************************************************
- *
- * FUNCTION: Acpi_ex_execute_method
- *
- * PARAMETERS: Pcode - Pointer to the pcode stream
- * Pcode_length - Length of pcode that comprises the method
- * **Params - List of parameters to pass to method,
- * terminated by NULL. Params itself may be
- * NULL if no parameters are being passed.
- *
- * RETURN: Status
- *
- * DESCRIPTION: Execute a control method
- *
- ******************************************************************************/
-
-acpi_status
-acpi_ex_execute_method (
- acpi_namespace_node *method_node,
- acpi_operand_object **params,
- acpi_operand_object **return_obj_desc)
-{
- acpi_status status;
-
-
- FUNCTION_TRACE ("Ex_execute_method");
-
-
- /*
- * The point here is to lock the interpreter and call the low
- * level execute.
- */
- status = acpi_ex_enter_interpreter ();
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
- status = acpi_psx_execute (method_node, params, return_obj_desc);
-
- acpi_ex_exit_interpreter ();
-
- return_ACPI_STATUS (status);
-}
-
-
-#endif
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/hardware/hwacpi.c linux/drivers/acpi/hardware/hwacpi.c
--- v2.4.13/linux/drivers/acpi/hardware/hwacpi.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/hardware/hwacpi.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface
- * $Revision: 45 $
+ * $Revision: 46 $
*
*****************************************************************************/
@@ -220,7 +220,7 @@
/* Give the platform some time to react */
- acpi_os_stall (5000);
+ acpi_os_stall (20000);
if (acpi_hw_get_mode () == mode) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", mode));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/hardware/hwgpe.c linux/drivers/acpi/hardware/hwgpe.c
--- v2.4.13/linux/drivers/acpi/hardware/hwgpe.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/hardware/hwgpe.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: hwgpe - Low level GPE enable/disable/clear functions
- * $Revision: 32 $
+ * $Revision: 35 $
*
*****************************************************************************/
@@ -77,6 +77,45 @@
(in_byte | bit_mask), 8);
}
+/******************************************************************************
+ *
+ * FUNCTION: Acpi_hw_enable_gpe_for_wakeup
+ *
+ * PARAMETERS: Gpe_number - The GPE
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Keep track of which GPEs the OS has requested not be
+ * disabled when going to sleep.
+ *
+ ******************************************************************************/
+
+void
+acpi_hw_enable_gpe_for_wakeup (
+ u32 gpe_number)
+{
+ u32 register_index;
+ u32 bit_mask;
+
+
+ FUNCTION_ENTRY ();
+
+
+ /*
+ * Translate GPE number to index into global registers array.
+ */
+ register_index = acpi_gbl_gpe_valid[gpe_number];
+
+ /*
+ * Figure out the bit offset for this GPE within the target register.
+ */
+ bit_mask = acpi_gbl_decode_to8bit [MOD_8 (gpe_number)];
+
+ /*
+ * Set the bit so we will not disable this when sleeping
+ */
+ acpi_gbl_gpe_registers[register_index].wake_enable |= bit_mask;
+}
/******************************************************************************
*
@@ -120,8 +159,49 @@
acpi_os_read_port (acpi_gbl_gpe_registers[register_index].enable_addr, &in_byte, 8);
acpi_os_write_port (acpi_gbl_gpe_registers[register_index].enable_addr,
(in_byte & ~bit_mask), 8);
+
+ acpi_hw_disable_gpe_for_wakeup(gpe_number);
}
+/******************************************************************************
+ *
+ * FUNCTION: Acpi_hw_disable_gpe_for_wakeup
+ *
+ * PARAMETERS: Gpe_number - The GPE
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Keep track of which GPEs the OS has requested not be
+ * disabled when going to sleep.
+ *
+ ******************************************************************************/
+
+void
+acpi_hw_disable_gpe_for_wakeup (
+ u32 gpe_number)
+{
+ u32 register_index;
+ u32 bit_mask;
+
+
+ FUNCTION_ENTRY ();
+
+
+ /*
+ * Translate GPE number to index into global registers array.
+ */
+ register_index = acpi_gbl_gpe_valid[gpe_number];
+
+ /*
+ * Figure out the bit offset for this GPE within the target register.
+ */
+ bit_mask = acpi_gbl_decode_to8bit [MOD_8 (gpe_number)];
+
+ /*
+ * Clear the bit so we will disable this when sleeping
+ */
+ acpi_gbl_gpe_registers[register_index].wake_enable &= ~bit_mask;
+}
/******************************************************************************
*
@@ -215,11 +295,88 @@
}
/*
+ * Enabled for wake?:
+ */
+ if (bit_mask & acpi_gbl_gpe_registers[register_index].wake_enable) {
+ (*event_status) |= ACPI_EVENT_FLAG_WAKE_ENABLED;
+ }
+
+ /*
* Set?
*/
in_byte = 0;
acpi_os_read_port (acpi_gbl_gpe_registers[register_index].status_addr, &in_byte, 8);
if (bit_mask & in_byte) {
(*event_status) |= ACPI_EVENT_FLAG_SET;
+ }
+}
+
+/******************************************************************************
+ *
+ * FUNCTION: Acpi_hw_disable_non_wakeup_gpes
+ *
+ * PARAMETERS: None
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Disable all non-wakeup GPEs
+ * Call with interrupts disabled. The interrupt handler also
+ * modifies Acpi_gbl_Gpe_registers[i].Enable, so it should not be
+ * given the chance to run until after non-wake GPEs are
+ * re-enabled.
+ *
+ ******************************************************************************/
+
+void
+acpi_hw_disable_non_wakeup_gpes (
+ void)
+{
+ u32 i;
+
+ FUNCTION_ENTRY ();
+
+ for (i = 0; i < acpi_gbl_gpe_register_count; i++) {
+ /*
+ * Read the enabled status of all GPEs. We
+ * will be using it to restore all the GPEs later.
+ */
+ acpi_os_read_port (acpi_gbl_gpe_registers[i].enable_addr,
+ &acpi_gbl_gpe_registers[i].enable, 8);
+
+ /*
+ * Disable all GPEs but wakeup GPEs.
+ */
+ acpi_os_write_port(acpi_gbl_gpe_registers[i].enable_addr,
+ acpi_gbl_gpe_registers[i].wake_enable, 8);
+ }
+}
+
+/******************************************************************************
+ *
+ * FUNCTION: Acpi_hw_enable_non_wakeup_gpes
+ *
+ * PARAMETERS: None
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Enable all non-wakeup GPEs we previously enabled.
+ *
+ ******************************************************************************/
+
+void
+acpi_hw_enable_non_wakeup_gpes (
+ void)
+{
+ u32 i;
+
+ FUNCTION_ENTRY ();
+
+ for (i = 0; i < acpi_gbl_gpe_register_count; i++) {
+ /*
+ * We previously stored the enabled status of all GPEs.
+ * Blast them back in.
+ */
+ acpi_os_write_port(acpi_gbl_gpe_registers[i].enable_addr,
+ acpi_gbl_gpe_registers[i].enable, 8);
}
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/hardware/hwregs.c linux/drivers/acpi/hardware/hwregs.c
--- v2.4.13/linux/drivers/acpi/hardware/hwregs.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/hardware/hwregs.c Wed Oct 24 14:06:22 2001
@@ -3,7 +3,7 @@
*
* Module Name: hwregs - Read/write access functions for the various ACPI
* control and status registers.
- * $Revision: 109 $
+ * $Revision: 110 $
*
******************************************************************************/
@@ -453,8 +453,9 @@
register_value = acpi_hw_register_read (ACPI_MTX_DO_NOT_LOCK, PM2_CONTROL);
- ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %p\n",
- register_value, ACPI_GET_ADDRESS (acpi_gbl_FADT->Xpm2_cnt_blk.address)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n",
+ register_value, HIDWORD(acpi_gbl_FADT->Xpm2_cnt_blk.address),
+ LODWORD(acpi_gbl_FADT->Xpm2_cnt_blk.address)));
if (read_write == ACPI_WRITE) {
register_value &= ~mask;
@@ -462,8 +463,10 @@
value &= mask;
register_value |= value;
- ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %p\n", register_value,
- acpi_gbl_FADT->Xpm2_cnt_blk.address));
+ ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n",
+ register_value,
+ HIDWORD(acpi_gbl_FADT->Xpm2_cnt_blk.address),
+ LODWORD(acpi_gbl_FADT->Xpm2_cnt_blk.address)));
acpi_hw_register_write (ACPI_MTX_DO_NOT_LOCK,
PM2_CONTROL, (u8) (register_value));
@@ -476,8 +479,10 @@
mask = TMR_VAL_MASK;
register_value = acpi_hw_register_read (ACPI_MTX_DO_NOT_LOCK,
PM_TIMER);
- ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM_TIMER: Read %X from %p\n",
- register_value, ACPI_GET_ADDRESS (acpi_gbl_FADT->Xpm_tmr_blk.address)));
+ ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM_TIMER: Read %X from %8.8X%8.8X\n",
+ register_value,
+ HIDWORD(acpi_gbl_FADT->Xpm_tmr_blk.address),
+ LODWORD(acpi_gbl_FADT->Xpm_tmr_blk.address)));
break;
@@ -732,13 +737,13 @@
break;
- case PM1_a_CONTROL: /* 16-bit access */
+ case PM1A_CONTROL: /* 16-bit access */
acpi_hw_low_level_write (16, value, &acpi_gbl_FADT->Xpm1a_cnt_blk, 0);
break;
- case PM1_b_CONTROL: /* 16-bit access */
+ case PM1B_CONTROL: /* 16-bit access */
acpi_hw_low_level_write (16, value, &acpi_gbl_FADT->Xpm1b_cnt_blk, 0);
break;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/hardware/hwsleep.c linux/drivers/acpi/hardware/hwsleep.c
--- v2.4.13/linux/drivers/acpi/hardware/hwsleep.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/hardware/hwsleep.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
- * $Revision: 21 $
+ * $Revision: 22 $
*
*****************************************************************************/
@@ -137,8 +137,8 @@
acpi_object arg;
u8 type_a;
u8 type_b;
- u16 PM1_acontrol;
- u16 PM1_bcontrol;
+ u16 PM1Acontrol;
+ u16 PM1Bcontrol;
FUNCTION_TRACE ("Acpi_enter_sleep_state");
@@ -171,31 +171,31 @@
disable ();
- /* TODO: disable all non-wake GPEs here */
+ acpi_hw_disable_non_wakeup_gpes();
- PM1_acontrol = (u16) acpi_hw_register_read (ACPI_MTX_LOCK, PM1_CONTROL);
+ PM1Acontrol = (u16) acpi_hw_register_read (ACPI_MTX_LOCK, PM1_CONTROL);
ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Entering S%d\n", sleep_state));
/* mask off SLP_EN and SLP_TYP fields */
- PM1_acontrol &= ~(SLP_TYPE_X_MASK | SLP_EN_MASK);
- PM1_bcontrol = PM1_acontrol;
+ PM1Acontrol &= ~(SLP_TYPE_X_MASK | SLP_EN_MASK);
+ PM1Bcontrol = PM1Acontrol;
/* mask in SLP_TYP */
- PM1_acontrol |= (type_a << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
- PM1_bcontrol |= (type_b << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
+ PM1Acontrol |= (type_a << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
+ PM1Bcontrol |= (type_b << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
/* write #1: fill in SLP_TYP data */
- acpi_hw_register_write (ACPI_MTX_LOCK, PM1_a_CONTROL, PM1_acontrol);
- acpi_hw_register_write (ACPI_MTX_LOCK, PM1_b_CONTROL, PM1_bcontrol);
+ acpi_hw_register_write (ACPI_MTX_LOCK, PM1A_CONTROL, PM1Acontrol);
+ acpi_hw_register_write (ACPI_MTX_LOCK, PM1B_CONTROL, PM1Bcontrol);
/* mask in SLP_EN */
- PM1_acontrol |= (1 << acpi_hw_get_bit_shift (SLP_EN_MASK));
- PM1_bcontrol |= (1 << acpi_hw_get_bit_shift (SLP_EN_MASK));
+ PM1Acontrol |= (1 << acpi_hw_get_bit_shift (SLP_EN_MASK));
+ PM1Bcontrol |= (1 << acpi_hw_get_bit_shift (SLP_EN_MASK));
/* flush caches */
@@ -203,8 +203,8 @@
/* write #2: SLP_TYP + SLP_EN */
- acpi_hw_register_write (ACPI_MTX_LOCK, PM1_a_CONTROL, PM1_acontrol);
- acpi_hw_register_write (ACPI_MTX_LOCK, PM1_b_CONTROL, PM1_bcontrol);
+ acpi_hw_register_write (ACPI_MTX_LOCK, PM1A_CONTROL, PM1Acontrol);
+ acpi_hw_register_write (ACPI_MTX_LOCK, PM1B_CONTROL, PM1Bcontrol);
/*
* Wait a second, then try again. This is to get S4/5 to work on all machines.
@@ -223,6 +223,8 @@
}
while (!acpi_hw_register_bit_access (ACPI_READ, ACPI_MTX_LOCK, WAK_STS));
+ acpi_hw_enable_non_wakeup_gpes();
+
enable ();
return_ACPI_STATUS (AE_OK);
@@ -264,7 +266,7 @@
/* _WAK returns stuff - do we want to look at it? */
- /* Re-enable GPEs */
+ acpi_hw_enable_non_wakeup_gpes();
return_ACPI_STATUS (AE_OK);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/hardware/hwtimer.c linux/drivers/acpi/hardware/hwtimer.c
--- v2.4.13/linux/drivers/acpi/hardware/hwtimer.c Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/hardware/hwtimer.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwtimer.c - ACPI Power Management Timer Interface
- * $Revision: 12 $
+ * $Revision: 14 $
*
*****************************************************************************/
@@ -47,19 +47,9 @@
acpi_get_timer_resolution (
u32 *resolution)
{
- acpi_status status;
-
-
FUNCTION_TRACE ("Acpi_get_timer_resolution");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
if (!resolution) {
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@@ -92,18 +82,8 @@
acpi_get_timer (
u32 *ticks)
{
- acpi_status status;
-
-
FUNCTION_TRACE ("Acpi_get_timer");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
if (!ticks) {
return_ACPI_STATUS (AE_BAD_PARAMETER);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acconfig.h linux/drivers/acpi/include/acconfig.h
--- v2.4.13/linux/drivers/acpi/include/acconfig.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acconfig.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
- * $Revision: 69 $
+ * $Revision: 74 $
*
*****************************************************************************/
@@ -53,7 +53,11 @@
/* Version string */
-#define ACPI_CA_VERSION 0x20010831
+#define ACPI_CA_VERSION 0x20011018
+
+/* Version of ACPI supported */
+
+#define ACPI_CA_SUPPORT_LEVEL 2
/* Maximum objects in the various object caches */
@@ -78,7 +82,7 @@
/* Max reference count (for debug only) */
-#define MAX_REFERENCE_COUNT 0x200
+#define MAX_REFERENCE_COUNT 0x400
/* Size of cached memory mapping for system memory operation region */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acdebug.h linux/drivers/acpi/include/acdebug.h
--- v2.4.13/linux/drivers/acpi/include/acdebug.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acdebug.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdebug.h - ACPI/AML debugger
- * $Revision: 47 $
+ * $Revision: 50 $
*
*****************************************************************************/
@@ -35,7 +35,7 @@
extern int optind;
extern NATIVE_CHAR *optarg;
-extern u8 *aml_ptr;
+extern u8 *aml_start;
extern u32 aml_length;
extern u8 acpi_gbl_db_opt_tables;
@@ -57,6 +57,7 @@
extern u8 acpi_gbl_db_output_flags;
extern u32 acpi_gbl_db_debug_level;
extern u32 acpi_gbl_db_console_debug_level;
+extern acpi_table_header *acpi_gbl_db_table_ptr;
/*
* Statistic globals
@@ -119,11 +120,15 @@
acpi_db_initialize (
void);
+void
+acpi_db_terminate (
+ void);
+
acpi_status
acpi_db_single_step (
acpi_walk_state *walk_state,
acpi_parse_object *op,
- u8 op_type);
+ u32 op_type);
/*
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acdispat.h linux/drivers/acpi/include/acdispat.h
--- v2.4.13/linux/drivers/acpi/include/acdispat.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acdispat.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdispat.h - dispatcher (parser to interpreter interface)
- * $Revision: 40 $
+ * $Revision: 45 $
*
*****************************************************************************/
@@ -86,25 +86,20 @@
acpi_status
acpi_ds_get_predicate_value (
acpi_walk_state *walk_state,
- acpi_parse_object *op,
u32 has_result_obj);
acpi_status
acpi_ds_exec_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op);
acpi_status
acpi_ds_exec_end_op (
- acpi_walk_state *state,
- acpi_parse_object *op);
+ acpi_walk_state *state);
/* dsfield - Parser/Interpreter interface for AML fields */
-
acpi_status
acpi_ds_create_field (
acpi_parse_object *op,
@@ -123,44 +118,36 @@
acpi_namespace_node *region_node,
acpi_walk_state *walk_state);
+acpi_status
+acpi_ds_create_buffer_field (
+ acpi_parse_object *op,
+ acpi_walk_state *walk_state);
+
/* dsload - Parser/Interpreter interface, namespace load callbacks */
acpi_status
acpi_ds_load1_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op);
acpi_status
acpi_ds_load1_end_op (
- acpi_walk_state *walk_state,
- acpi_parse_object *op);
+ acpi_walk_state *walk_state);
acpi_status
acpi_ds_load2_begin_op (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op);
acpi_status
acpi_ds_load2_end_op (
- acpi_walk_state *state,
- acpi_parse_object *op);
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ds_load3_begin_op (
- u16 opcode,
- acpi_parse_object *op,
+acpi_ds_init_callbacks (
acpi_walk_state *walk_state,
- acpi_parse_object **out_op);
-
-acpi_status
-acpi_ds_load3_end_op (
- acpi_walk_state *state,
- acpi_parse_object *op);
+ u32 pass_number);
/* dsmthdat - method data (locals/args) */
@@ -374,7 +361,7 @@
acpi_walk_state *walk_state);
-/* Acpi_dswstate - parser WALK_STATE management routines */
+/* dswstate - parser WALK_STATE management routines */
acpi_walk_state *
acpi_ds_create_walk_state (
@@ -384,6 +371,17 @@
acpi_walk_list *walk_list);
acpi_status
+acpi_ds_init_aml_walk (
+ acpi_walk_state *walk_state,
+ acpi_parse_object *op,
+ acpi_namespace_node *method_node,
+ u8 *aml_start,
+ u32 aml_length,
+ acpi_operand_object **params,
+ acpi_operand_object **return_obj_desc,
+ u32 pass_number);
+
+acpi_status
acpi_ds_obj_stack_delete_all (
acpi_walk_state *walk_state);
@@ -398,6 +396,11 @@
acpi_walk_state *
acpi_ds_pop_walk_state (
+ acpi_walk_list *walk_list);
+
+void
+acpi_ds_push_walk_state (
+ acpi_walk_state *walk_state,
acpi_walk_list *walk_list);
acpi_status
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acevents.h linux/drivers/acpi/include/acevents.h
--- v2.4.13/linux/drivers/acpi/include/acevents.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acevents.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acevents.h - Event subcomponent prototypes and defines
- * $Revision: 65 $
+ * $Revision: 66 $
*
*****************************************************************************/
@@ -157,6 +157,20 @@
acpi_status
acpi_ev_pci_config_region_setup (
+ acpi_handle handle,
+ u32 function,
+ void *handler_context,
+ void **region_context);
+
+acpi_status
+acpi_ev_cmos_region_setup (
+ acpi_handle handle,
+ u32 function,
+ void *handler_context,
+ void **region_context);
+
+acpi_status
+acpi_ev_pci_bar_region_setup (
acpi_handle handle,
u32 function,
void *handler_context,
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acglobal.h linux/drivers/acpi/include/acglobal.h
--- v2.4.13/linux/drivers/acpi/include/acglobal.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acglobal.h Wed Oct 24 14:06:22 2001
@@ -94,7 +94,7 @@
* actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs.
* (The table maps local handles to the real OS handles)
*/
-ACPI_EXTERN ACPI_MUTEX_INFO acpi_gbl_acpi_mutex_info [NUM_MTX];
+ACPI_EXTERN acpi_mutex_info acpi_gbl_acpi_mutex_info [NUM_MTX];
/*****************************************************************************
@@ -172,7 +172,7 @@
/* Address Space handlers */
-ACPI_EXTERN ACPI_ADR_SPACE_INFO acpi_gbl_address_spaces[ACPI_NUM_ADDRESS_SPACES];
+ACPI_EXTERN acpi_adr_space_info acpi_gbl_address_spaces[ACPI_NUM_ADDRESS_SPACES];
/* Control method single step flag */
@@ -194,10 +194,10 @@
*
****************************************************************************/
-ACPI_EXTERN ACPI_FIXED_EVENT_INFO acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
+ACPI_EXTERN acpi_fixed_event_info acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
ACPI_EXTERN acpi_handle acpi_gbl_gpe_obj_handle;
ACPI_EXTERN u32 acpi_gbl_gpe_register_count;
-ACPI_EXTERN ACPI_GPE_REGISTERS *acpi_gbl_gpe_registers;
+ACPI_EXTERN acpi_gpe_registers *acpi_gbl_gpe_registers;
ACPI_EXTERN acpi_gpe_level_info *acpi_gbl_gpe_info;
/*
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/achware.h linux/drivers/acpi/include/achware.h
--- v2.4.13/linux/drivers/acpi/include/achware.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/achware.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: achware.h -- hardware specific interfaces
- * $Revision: 55 $
+ * $Revision: 56 $
*
*****************************************************************************/
@@ -105,20 +105,37 @@
void
acpi_hw_enable_gpe (
- u32 gpe_index);
+ u32 gpe_number);
+
+void
+acpi_hw_enable_gpe_for_wakeup (
+ u32 gpe_number);
void
acpi_hw_disable_gpe (
- u32 gpe_index);
+ u32 gpe_number);
+
+void
+acpi_hw_disable_gpe_for_wakeup (
+ u32 gpe_number);
void
acpi_hw_clear_gpe (
- u32 gpe_index);
+ u32 gpe_number);
void
acpi_hw_get_gpe_status (
u32 gpe_number,
acpi_event_status *event_status);
+
+void
+acpi_hw_disable_non_wakeup_gpes (
+ void);
+
+void
+acpi_hw_enable_non_wakeup_gpes (
+ void);
+
/* Sleep Prototypes */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acinterp.h linux/drivers/acpi/include/acinterp.h
--- v2.4.13/linux/drivers/acpi/include/acinterp.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acinterp.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
- * $Revision: 106 $
+ * $Revision: 116 $
*
*****************************************************************************/
@@ -179,51 +179,75 @@
*/
acpi_status
-acpi_ex_triadic (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_3A_0T_0R (
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ex_hexadic (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_3A_1T_1R (
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ex_create_buffer_field (
- u8 *aml_ptr,
- u32 aml_length,
- acpi_namespace_node *node,
+acpi_ex_opcode_6A_0T_1R (
acpi_walk_state *walk_state);
acpi_status
-acpi_ex_reconfiguration (
- u16 opcode,
+acpi_ex_get_object_reference (
+ acpi_operand_object *obj_desc,
+ acpi_operand_object **return_desc,
acpi_walk_state *walk_state);
acpi_status
+acpi_ex_do_concatenate (
+ acpi_operand_object *obj_desc,
+ acpi_operand_object *obj_desc2,
+ acpi_operand_object **actual_return_desc,
+ acpi_walk_state *walk_state);
+
+u8
+acpi_ex_do_logical_op (
+ u16 opcode,
+ acpi_integer operand0,
+ acpi_integer operand1);
+
+acpi_integer
+acpi_ex_do_math_op (
+ u16 opcode,
+ acpi_integer operand0,
+ acpi_integer operand1);
+
+acpi_status
+acpi_ex_load_op (
+ acpi_operand_object *rgn_desc,
+ acpi_operand_object *ddb_handle);
+
+acpi_status
+acpi_ex_unload_table (
+ acpi_operand_object *ddb_handle);
+
+acpi_status
acpi_ex_create_mutex (
acpi_walk_state *walk_state);
acpi_status
acpi_ex_create_processor (
- acpi_parse_object *op,
- acpi_namespace_node *processor_node);
+ acpi_walk_state *walk_state);
acpi_status
acpi_ex_create_power_resource (
- acpi_parse_object *op,
- acpi_namespace_node *power_node);
+ acpi_walk_state *walk_state);
acpi_status
acpi_ex_create_region (
- u8 *aml_ptr,
+ u8 *aml_start,
u32 aml_length,
u8 region_space,
acpi_walk_state *walk_state);
acpi_status
+acpi_ex_create_table_region (
+ acpi_walk_state *walk_state);
+
+acpi_status
acpi_ex_create_event (
acpi_walk_state *walk_state);
@@ -233,10 +257,9 @@
acpi_status
acpi_ex_create_method (
- u8 *aml_ptr,
+ u8 *aml_start,
u32 aml_length,
- u32 method_flags,
- acpi_namespace_node *method);
+ acpi_walk_state *walk_state);
/*
@@ -301,6 +324,9 @@
u32 field_position,
u32 field_length);
+acpi_status
+acpi_ex_prep_field_value (
+ ACPI_CREATE_FIELD_INFO *info);
/*
* amsystem - Interface to OS services
@@ -352,49 +378,40 @@
*/
acpi_status
-acpi_ex_monadic1 (
- u16 opcode,
+acpi_ex_opcode_1A_0T_0R (
acpi_walk_state *walk_state);
acpi_status
-acpi_ex_monadic2 (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_1A_0T_1R (
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ex_monadic2_r (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_1A_1T_1R (
+ acpi_walk_state *walk_state);
+acpi_status
+acpi_ex_opcode_1A_1T_0R (
+ acpi_walk_state *walk_state);
/*
* amdyadic - ACPI AML (p-code) execution, dyadic operators
*/
acpi_status
-acpi_ex_dyadic1 (
- u16 opcode,
+acpi_ex_opcode_2A_0T_0R (
acpi_walk_state *walk_state);
acpi_status
-acpi_ex_dyadic2 (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_2A_0T_1R (
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ex_dyadic2_r (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_2A_1T_1R (
+ acpi_walk_state *walk_state);
acpi_status
-acpi_ex_dyadic2_s (
- u16 opcode,
- acpi_walk_state *walk_state,
- acpi_operand_object **return_desc);
+acpi_ex_opcode_2A_2T_1R (
+ acpi_walk_state *walk_state);
/*
@@ -429,7 +446,7 @@
void
acpi_ex_show_hex_value (
u32 byte_count,
- u8 *aml_ptr,
+ u8 *aml_start,
u32 lead_space);
@@ -640,6 +657,24 @@
acpi_status
acpi_ex_pci_config_space_handler (
+ u32 function,
+ ACPI_PHYSICAL_ADDRESS address,
+ u32 bit_width,
+ u32 *value,
+ void *handler_context,
+ void *region_context);
+
+acpi_status
+acpi_ex_cmos_space_handler (
+ u32 function,
+ ACPI_PHYSICAL_ADDRESS address,
+ u32 bit_width,
+ u32 *value,
+ void *handler_context,
+ void *region_context);
+
+acpi_status
+acpi_ex_pci_bar_space_handler (
u32 function,
ACPI_PHYSICAL_ADDRESS address,
u32 bit_width,
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/aclocal.h linux/drivers/acpi/include/aclocal.h
--- v2.4.13/linux/drivers/acpi/include/aclocal.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/aclocal.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
- * $Revision: 130 $
+ * $Revision: 138 $
*
*****************************************************************************/
@@ -29,7 +29,7 @@
#define WAIT_FOREVER ((u32) -1)
-typedef void* ACPI_MUTEX;
+typedef void* acpi_mutex;
typedef u32 ACPI_MUTEX_HANDLE;
@@ -40,7 +40,15 @@
/* Object descriptor types */
#define ACPI_CACHED_OBJECT 0x11 /* ORed in when object is cached */
-#define ACPI_DESC_TYPE_STATE 0x22
+#define ACPI_DESC_TYPE_STATE 0x20
+#define ACPI_DESC_TYPE_STATE_UPDATE 0x21
+#define ACPI_DESC_TYPE_STATE_PACKAGE 0x22
+#define ACPI_DESC_TYPE_STATE_CONTROL 0x23
+#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x24
+#define ACPI_DESC_TYPE_STATE_PSCOPE 0x25
+#define ACPI_DESC_TYPE_STATE_WSCOPE 0x26
+#define ACPI_DESC_TYPE_STATE_RESULT 0x27
+#define ACPI_DESC_TYPE_STATE_NOTIFY 0x28
#define ACPI_DESC_TYPE_WALK 0x44
#define ACPI_DESC_TYPE_PARSER 0x66
#define ACPI_DESC_TYPE_INTERNAL 0x88
@@ -112,11 +120,11 @@
typedef struct acpi_mutex_info
{
- ACPI_MUTEX mutex;
+ acpi_mutex mutex;
u32 use_count;
u32 owner_id;
-} ACPI_MUTEX_INFO;
+} acpi_mutex_info;
/* This owner ID means that the mutex is not in use (unlocked) */
@@ -181,7 +189,7 @@
u32 name; /* ACPI Name, always 4 chars per ACPI spec */
- void *object; /* Pointer to attached ACPI object (optional) */
+ union acpi_operand_obj *object; /* Pointer to attached ACPI object (optional) */
struct acpi_node *child; /* first child */
struct acpi_node *peer; /* Next peer*/
u16 reference_count; /* Current count of references and children */
@@ -216,8 +224,8 @@
struct acpi_table_desc *installed_desc;
acpi_table_header *pointer;
void *base_pointer;
- u8 *aml_pointer;
- UINT64 physical_address;
+ u8 *aml_start;
+ u64 physical_address;
u32 aml_length;
u32 length;
u32 count;
@@ -235,13 +243,13 @@
acpi_handle *list;
u32 *count;
-} FIND_CONTEXT;
+} find_context;
typedef struct
{
acpi_namespace_node *node;
-} NS_SEARCH_DATA;
+} ns_search_data;
/*
@@ -274,7 +282,34 @@
u32 num_carats;
u8 fully_qualified;
-} ACPI_NAMESTRING_INFO;
+} acpi_namestring_info;
+
+
+/* Field creation info */
+
+typedef struct
+{
+ acpi_namespace_node *region_node;
+ acpi_namespace_node *field_node;
+ acpi_namespace_node *register_node;
+ acpi_namespace_node *data_register_node;
+ u32 bank_value;
+ u32 field_bit_position;
+ u32 field_bit_length;
+ u8 field_flags;
+ u8 field_type;
+
+} ACPI_CREATE_FIELD_INFO;
+
+/*
+ * Field flags: Bits 00 - 03 : Access_type (Any_acc, Byte_acc, etc.)
+ * 04 : Lock_rule (1 == Lock)
+ * 05 - 06 : Update_rule
+ */
+
+#define FIELD_ACCESS_TYPE_MASK 0x0F
+#define FIELD_LOCK_RULE_MASK 0x10
+#define FIELD_UPDATE_RULE_MASK 0x60
/*****************************************************************************
@@ -308,23 +343,24 @@
typedef struct
{
- ACPI_ADR_SPACE_HANDLER handler;
+ acpi_adr_space_handler handler;
void *context;
-} ACPI_ADR_SPACE_INFO;
+} acpi_adr_space_info;
/* Values and addresses of the GPE registers (both banks) */
typedef struct
{
- u8 status; /* Current value of status reg */
- u8 enable; /* Current value of enable reg */
u16 status_addr; /* Address of status reg */
u16 enable_addr; /* Address of enable reg */
+ u8 status; /* Current value of status reg */
+ u8 enable; /* Current value of enable reg */
+ u8 wake_enable; /* Mask of bits to keep enabled when sleeping */
u8 gpe_base; /* Base GPE number */
-} ACPI_GPE_REGISTERS;
+} acpi_gpe_registers;
#define ACPI_GPE_LEVEL_TRIGGERED 1
@@ -338,7 +374,7 @@
u8 type; /* Level or Edge */
acpi_handle method_handle; /* Method handle for direct (fast) execution */
- ACPI_GPE_HANDLER handler; /* Address of handler, if any */
+ acpi_gpe_handler handler; /* Address of handler, if any */
void *context; /* Context to be passed to handler */
} acpi_gpe_level_info;
@@ -348,10 +384,10 @@
typedef struct
{
- ACPI_EVENT_HANDLER handler; /* Address of handler. */
+ acpi_event_handler handler; /* Address of handler. */
void *context; /* Context to be passed to handler */
-} ACPI_FIXED_EVENT_INFO;
+} acpi_fixed_event_info;
/* Information used during field processing */
@@ -362,7 +398,7 @@
u8 field_flag;
u32 pkg_length;
-} ACPI_FIELD_INFO;
+} acpi_field_info;
/*****************************************************************************
@@ -397,7 +433,7 @@
typedef struct acpi_common_state
{
ACPI_STATE_COMMON
-} ACPI_COMMON_STATE;
+} acpi_common_state;
/*
@@ -408,7 +444,7 @@
ACPI_STATE_COMMON
union acpi_operand_obj *object;
-} ACPI_UPDATE_STATE;
+} acpi_update_state;
/*
@@ -424,7 +460,7 @@
u32 num_packages;
u16 index;
-} ACPI_PKG_STATE;
+} acpi_pkg_state;
/*
@@ -437,7 +473,7 @@
struct acpi_parse_obj *predicate_op;
u8 *aml_predicate_start; /* Start of if/while predicate */
-} ACPI_CONTROL_STATE;
+} acpi_control_state;
/*
@@ -448,7 +484,7 @@
ACPI_STATE_COMMON
acpi_namespace_node *node;
-} ACPI_SCOPE_STATE;
+} acpi_scope_state;
typedef struct acpi_pscope_state
@@ -460,7 +496,7 @@
u32 arg_list; /* next argument to parse */
u32 arg_count; /* Number of fixed arguments */
-} ACPI_PSCOPE_STATE;
+} acpi_pscope_state;
/*
@@ -474,7 +510,17 @@
u8 num_results;
u8 last_insert;
-} ACPI_RESULT_VALUES;
+} acpi_result_values;
+
+
+typedef
+acpi_status (*acpi_parse_downwards) (
+ struct acpi_walk_state *walk_state,
+ struct acpi_parse_obj **out_op);
+
+typedef
+acpi_status (*acpi_parse_upwards) (
+ struct acpi_walk_state *walk_state);
/*
@@ -487,36 +533,34 @@
acpi_namespace_node *node;
union acpi_operand_obj *handler_obj;
-} ACPI_NOTIFY_INFO;
+} acpi_notify_info;
/* Generic state is union of structs above */
typedef union acpi_gen_state
{
- ACPI_COMMON_STATE common;
- ACPI_CONTROL_STATE control;
- ACPI_UPDATE_STATE update;
- ACPI_SCOPE_STATE scope;
- ACPI_PSCOPE_STATE parse_scope;
- ACPI_PKG_STATE pkg;
- ACPI_RESULT_VALUES results;
- ACPI_NOTIFY_INFO notify;
+ acpi_common_state common;
+ acpi_control_state control;
+ acpi_update_state update;
+ acpi_scope_state scope;
+ acpi_pscope_state parse_scope;
+ acpi_pkg_state pkg;
+ acpi_result_values results;
+ acpi_notify_info notify;
} acpi_generic_state;
-typedef
-acpi_status (*acpi_parse_downwards) (
- u16 opcode,
- struct acpi_parse_obj *op,
- struct acpi_walk_state *walk_state,
- struct acpi_parse_obj **out_op);
+/*****************************************************************************
+ *
+ * Interpreter typedefs and structs
+ *
+ ****************************************************************************/
typedef
-acpi_status (*acpi_parse_upwards) (
- struct acpi_walk_state *walk_state,
- struct acpi_parse_obj *op);
+acpi_status (*ACPI_EXECUTE_OP) (
+ struct acpi_walk_state *walk_state);
/*****************************************************************************
@@ -525,35 +569,6 @@
*
****************************************************************************/
-#define ACPI_OP_CLASS_MASK 0x1F
-#define ACPI_OP_ARGS_MASK 0x20
-#define ACPI_OP_TYPE_MASK 0xC0
-
-#define ACPI_OP_TYPE_OPCODE 0x00
-#define ACPI_OP_TYPE_ASCII 0x40
-#define ACPI_OP_TYPE_PREFIX 0x80
-#define ACPI_OP_TYPE_UNKNOWN 0xC0
-
-#define ACPI_GET_OP_CLASS(a) ((a)->flags & ACPI_OP_CLASS_MASK)
-#define ACPI_GET_OP_ARGS(a) ((a)->flags & ACPI_OP_ARGS_MASK)
-#define ACPI_GET_OP_TYPE(a) ((a)->flags & ACPI_OP_TYPE_MASK)
-
-/*
- * Flags byte: 0-4 (5 bits) = Opcode Class (0x001F
- * 5 (1 bit) = Has arguments flag
- * 6-7 (2 bits) = Reserved
- */
-#define AML_NO_ARGS 0
-#define AML_HAS_ARGS 0x0020
-#define AML_NSOBJECT 0x0100
-#define AML_NSOPCODE 0x0200
-#define AML_NSNODE 0x0400
-#define AML_NAMED 0x0800
-#define AML_DEFER 0x1000
-#define AML_FIELD 0x2000
-#define AML_CREATE 0x4000
-
-
/*
* AML opcode, name, and argument layout
*/
@@ -561,7 +576,9 @@
{
u32 parse_args; /* Grammar/Parse time arguments */
u32 runtime_args; /* Interpret time arguments */
- u16 flags; /* Opcode type, Has_args flag */
+ u16 flags; /* Misc flags */
+ u8 class; /* Opcode class */
+ u8 type; /* Opcode type */
#ifdef _OPCODE_NAMES
NATIVE_CHAR *name; /* op name (debug only) */
@@ -583,7 +600,7 @@
NATIVE_CHAR *name; /* NULL terminated string */
struct acpi_parse_obj *arg; /* arguments and contained ops */
-} ACPI_PARSE_VALUE;
+} acpi_parse_value;
#define ACPI_PARSE_COMMON \
@@ -597,7 +614,7 @@
NATIVE_CHAR op_name[16]) /* op name (debug only) */\
/* NON-DEBUG members below: */\
acpi_namespace_node *node; /* for use by interpreter */\
- ACPI_PARSE_VALUE value; /* Value or args associated with the opcode */\
+ acpi_parse_value value; /* Value or args associated with the opcode */\
/*
@@ -627,18 +644,22 @@
* Parse state - one state per parser invocation and each control
* method.
*/
-
typedef struct acpi_parse_state
{
+ u32 aml_size;
u8 *aml_start; /* first AML byte */
u8 *aml; /* next AML byte */
u8 *aml_end; /* (last + 1) AML byte */
u8 *pkg_start; /* current package begin */
u8 *pkg_end; /* current package end */
- acpi_parse_object *start_op; /* root of parse tree */
+
+ struct acpi_parse_obj *start_op; /* root of parse tree */
struct acpi_node *start_node;
- acpi_generic_state *scope; /* current scope */
- struct acpi_parse_state *next;
+ union acpi_gen_state *scope; /* current scope */
+
+
+ struct acpi_parse_obj *start_scope;
+
} acpi_parse_state;
@@ -683,8 +704,8 @@
#define PM1_STS 0x0100
#define PM1_EN 0x0200
#define PM1_CONTROL 0x0300
-#define PM1_a_CONTROL 0x0400
-#define PM1_b_CONTROL 0x0500
+#define PM1A_CONTROL 0x0400
+#define PM1B_CONTROL 0x0500
#define PM2_CONTROL 0x0600
#define PM_TIMER 0x0700
#define PROCESSOR_BLOCK 0x0800
@@ -838,7 +859,7 @@
{
char buffer[ACPI_DEVICE_ID_LENGTH];
-} ACPI_DEVICE_ID;
+} acpi_device_id;
/*****************************************************************************
@@ -879,7 +900,7 @@
NATIVE_CHAR *proc_name;
NATIVE_CHAR *module_name;
-} ACPI_DEBUG_PRINT_INFO;
+} acpi_debug_print_info;
/* Entry for a memory allocation (debug only) */
@@ -903,14 +924,14 @@
{
ACPI_COMMON_DEBUG_MEM_HEADER
-} ACPI_DEBUG_MEM_HEADER;
+} acpi_debug_mem_header;
typedef struct acpi_debug_mem_block
{
ACPI_COMMON_DEBUG_MEM_HEADER
- UINT64 user_space;
+ u64 user_space;
-} ACPI_DEBUG_MEM_BLOCK;
+} acpi_debug_mem_block;
#define ACPI_MEM_LIST_GLOBAL 0
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acmacros.h linux/drivers/acpi/include/acmacros.h
--- v2.4.13/linux/drivers/acpi/include/acmacros.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acmacros.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acmacros.h - C macros for the entire subsystem.
- * $Revision: 94 $
+ * $Revision: 97 $
*
*****************************************************************************/
@@ -104,7 +104,7 @@
* Full 64-bit address/integer on both 32-bit and 64-bit platforms
*/
#ifndef LODWORD
-#define LODWORD(l) ((u32)(UINT64)(l))
+#define LODWORD(l) ((u32)(u64)(l))
#endif
#ifndef HIDWORD
@@ -142,7 +142,7 @@
#define MOVE_UNALIGNED16_TO_16(d,s) *(u16*)(d) = *(u16*)(s)
#define MOVE_UNALIGNED32_TO_32(d,s) *(u32*)(d) = *(u32*)(s)
#define MOVE_UNALIGNED16_TO_32(d,s) *(u32*)(d) = *(u16*)(s)
-#define MOVE_UNALIGNED64_TO_64(d,s) *(UINT64*)(d) = *(UINT64*)(s)
+#define MOVE_UNALIGNED64_TO_64(d,s) *(u64*)(d) = *(u64*)(s)
#else
/*
@@ -197,11 +197,6 @@
#define MUL_16(a) _MUL(a,4)
#define MOD_16(a) _MOD(a,16)
-/*
- * Divide and Modulo
- */
-#define ACPI_DIVIDE(n,d) ((n) / (d))
-#define ACPI_MODULO(n,d) ((n) % (d))
/*
* Rounding macros (Power of two boundaries only)
@@ -223,7 +218,7 @@
#define ROUND_BITS_UP_TO_BYTES(a) DIV_8((a) + 7)
#define ROUND_BITS_DOWN_TO_BYTES(a) DIV_8((a))
-#define ROUND_UP_TO_1_k(a) (((a) + 1023) >> 10)
+#define ROUND_UP_TO_1K(a) (((a) + 1023) >> 10)
/* Generic (non-power-of-two) rounding */
@@ -243,9 +238,9 @@
#ifndef _IA16
-#define ACPI_PCI_DEVICE_MASK (UINT64) 0x0000FFFF00000000
-#define ACPI_PCI_FUNCTION_MASK (UINT64) 0x00000000FFFF0000
-#define ACPI_PCI_REGISTER_MASK (UINT64) 0x000000000000FFFF
+#define ACPI_PCI_DEVICE_MASK (u64) 0x0000FFFF00000000
+#define ACPI_PCI_FUNCTION_MASK (u64) 0x00000000FFFF0000
+#define ACPI_PCI_REGISTER_MASK (u64) 0x000000000000FFFF
#define ACPI_PCI_FUNCTION(a) (u16) ((((a) & ACPI_PCI_FUNCTION_MASK) >> 16))
#define ACPI_PCI_DEVICE(a) (u16) ((((a) & ACPI_PCI_DEVICE_MASK) >> 32))
@@ -279,10 +274,6 @@
#define IS_SINGLE_TABLE(x) (((x) & 0x01) == ACPI_TABLE_SINGLE ? 1 : 0)
-/* Check if ACPI has been initialized properly */
-
-#define ACPI_IS_INITIALIZATION_COMPLETE(s) {if (acpi_gbl_root_node) s = AE_OK; else s=AE_NO_NAMESPACE;}
-
/*
* Macro to check if a pointer is within an ACPI table.
* Parameter (a) is the pointer to check. Parameter (b) must be defined
@@ -303,9 +294,9 @@
* Macros for the master AML opcode table
*/
#ifdef ACPI_DEBUG
-#define ACPI_OP(name,Pargs,Iargs,flags) {Pargs,Iargs,flags,name}
+#define ACPI_OP(name,Pargs,Iargs,class,type,flags) {Pargs,Iargs,flags,class,type,name}
#else
-#define ACPI_OP(name,Pargs,Iargs,flags) {Pargs,Iargs,flags}
+#define ACPI_OP(name,Pargs,Iargs,class,type,flags) {Pargs,Iargs,flags,class,type}
#endif
#define ARG_TYPE_WIDTH 5
@@ -409,7 +400,7 @@
* as a local string ("_Proc_name) so that it can be also used by the function exit macros below.
*/
-#define PROC_NAME(a) ACPI_DEBUG_PRINT_INFO _dbg; \
+#define PROC_NAME(a) acpi_debug_print_info _dbg; \
_dbg.component_id = _COMPONENT; \
_dbg.proc_name = a; \
_dbg.module_name = _THIS_MODULE;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acnamesp.h linux/drivers/acpi/include/acnamesp.h
--- v2.4.13/linux/drivers/acpi/include/acnamesp.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acnamesp.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
- * $Revision: 107 $
+ * $Revision: 110 $
*
*****************************************************************************/
@@ -98,18 +98,16 @@
acpi_handle start_object,
u32 max_depth,
u8 unlock_before_callback,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void **return_value);
-
acpi_namespace_node *
-acpi_ns_get_next_object (
+acpi_ns_get_next_node (
acpi_object_type8 type,
acpi_namespace_node *parent,
acpi_namespace_node *child);
-
acpi_status
acpi_ns_delete_namespace_by_owner (
u16 table_id);
@@ -224,6 +222,7 @@
void
acpi_ns_dump_objects (
acpi_object_type8 type,
+ u8 display_type,
u32 max_depth,
u32 ownder_id,
acpi_handle start_handle);
@@ -304,7 +303,6 @@
acpi_namespace_node *obj_node,
NATIVE_CHAR *search_for);
-
acpi_status
acpi_ns_get_node (
NATIVE_CHAR *pathname,
@@ -382,11 +380,11 @@
acpi_status
acpi_ns_build_internal_name (
- ACPI_NAMESTRING_INFO *info);
+ acpi_namestring_info *info);
acpi_status
acpi_ns_get_internal_name_length (
- ACPI_NAMESTRING_INFO *info);
+ acpi_namestring_info *info);
acpi_status
acpi_ns_internalize_name (
@@ -401,7 +399,7 @@
NATIVE_CHAR **converted_name);
acpi_namespace_node *
-acpi_ns_convert_handle_to_entry (
+acpi_ns_map_handle_to_node (
acpi_handle handle);
acpi_handle
@@ -418,7 +416,7 @@
acpi_namespace_node *
-acpi_ns_get_next_valid_object (
+acpi_ns_get_next_valid_node (
acpi_namespace_node *node);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acobject.h linux/drivers/acpi/include/acobject.h
--- v2.4.13/linux/drivers/acpi/include/acobject.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acobject.h Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: acobject.h - Definition of acpi_operand_object (Internal object only)
- * $Revision: 90 $
+ * $Revision: 93 $
*
*****************************************************************************/
@@ -98,6 +98,13 @@
#define AFIELD_SINGLE_DATUM 0x1
+/*
+ * Fields common to both Strings and Buffers
+ */
+#define ACPI_COMMON_BUFFER_INFO \
+ u32 length;
+
+
/******************************************************************************
*
* Individual Object Descriptors
@@ -132,8 +139,7 @@
typedef struct /* STRING - has length and pointer - Null terminated, ASCII characters only */
{
ACPI_OBJECT_COMMON_HEADER
-
- u32 length;
+ ACPI_COMMON_BUFFER_INFO
NATIVE_CHAR *pointer; /* String value in AML stream or in allocated space */
} ACPI_OBJECT_STRING;
@@ -142,9 +148,8 @@
typedef struct /* BUFFER - has length and pointer - not null terminated */
{
ACPI_OBJECT_COMMON_HEADER
-
- u32 length;
- u8 *pointer; /* points to the buffer in allocated space */
+ ACPI_COMMON_BUFFER_INFO
+ u8 *pointer; /* Buffer value in AML stream or in allocated space */
} ACPI_OBJECT_BUFFER;
@@ -154,7 +159,6 @@
ACPI_OBJECT_COMMON_HEADER
u32 count; /* # of elements in package */
-
union acpi_operand_obj **elements; /* Array of pointers to Acpi_objects */
union acpi_operand_obj **next_element; /* used only while initializing */
@@ -188,10 +192,10 @@
u8 method_flags;
u8 param_count;
- u32 pcode_length;
+ u32 aml_length;
void *semaphore;
- u8 *pcode;
+ u8 *aml_start;
u8 concurrency;
u8 thread_count;
@@ -341,7 +345,7 @@
ACPI_OBJECT_COMMON_HEADER
acpi_namespace_node *node; /* Parent device */
- ACPI_NOTIFY_HANDLER handler;
+ acpi_notify_handler handler;
void *context;
} ACPI_OBJECT_NOTIFY_HANDLER;
@@ -358,11 +362,11 @@
u8 space_id;
u16 hflags;
- ACPI_ADR_SPACE_HANDLER handler;
+ acpi_adr_space_handler handler;
acpi_namespace_node *node; /* Parent device */
void *context;
- ACPI_ADR_SPACE_SETUP setup;
+ acpi_adr_space_setup setup;
union acpi_operand_obj *region_list; /* regions using this handler */
union acpi_operand_obj *next;
@@ -402,8 +406,8 @@
ACPI_OBJECT_COMMON_HEADER
u8 byte_fill1;
u16 word_fill1;
- u32 pcode_length;
- u8 *pcode;
+ u32 aml_length;
+ u8 *aml_start;
acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
void *region_context; /* Region-specific data */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acparser.h linux/drivers/acpi/include/acparser.h
--- v2.4.13/linux/drivers/acpi/include/acparser.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acparser.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: acparser.h - AML Parser subcomponent prototypes and defines
- * $Revision: 51 $
+ * $Revision: 54 $
*
*****************************************************************************/
@@ -121,8 +121,6 @@
acpi_status
acpi_ps_find_object (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op);
@@ -136,15 +134,7 @@
acpi_status
acpi_ps_parse_aml (
- acpi_parse_object *start_scope,
- u8 *aml,
- u32 aml_size,
- u32 parse_flags,
- acpi_namespace_node *method_node,
- acpi_operand_object **params,
- acpi_operand_object **caller_return_desc,
- acpi_parse_downwards descending_callback,
- acpi_parse_upwards ascending_callback);
+ acpi_walk_state *walk_state);
acpi_status
acpi_ps_parse_table (
@@ -245,12 +235,6 @@
/* psutils - parser utilities */
-
-
-acpi_parse_state *
-acpi_ps_create_state (
- u8 *aml,
- u32 aml_size);
void
acpi_ps_init_op (
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acpixf.h linux/drivers/acpi/include/acpixf.h
--- v2.4.13/linux/drivers/acpi/include/acpixf.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acpixf.h Wed Oct 24 14:06:22 2001
@@ -135,14 +135,14 @@
acpi_object_type type,
acpi_handle start_object,
u32 max_depth,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void * *return_value);
acpi_status
acpi_get_devices (
NATIVE_CHAR *HID,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void **return_value);
@@ -200,46 +200,46 @@
acpi_status
acpi_install_fixed_event_handler (
u32 acpi_event,
- ACPI_EVENT_HANDLER handler,
+ acpi_event_handler handler,
void *context);
acpi_status
acpi_remove_fixed_event_handler (
u32 acpi_event,
- ACPI_EVENT_HANDLER handler);
+ acpi_event_handler handler);
acpi_status
acpi_install_notify_handler (
acpi_handle device,
u32 handler_type,
- ACPI_NOTIFY_HANDLER handler,
+ acpi_notify_handler handler,
void *context);
acpi_status
acpi_remove_notify_handler (
acpi_handle device,
u32 handler_type,
- ACPI_NOTIFY_HANDLER handler);
+ acpi_notify_handler handler);
acpi_status
acpi_install_address_space_handler (
acpi_handle device,
ACPI_ADR_SPACE_TYPE space_id,
- ACPI_ADR_SPACE_HANDLER handler,
- ACPI_ADR_SPACE_SETUP setup,
+ acpi_adr_space_handler handler,
+ acpi_adr_space_setup setup,
void *context);
acpi_status
acpi_remove_address_space_handler (
acpi_handle device,
ACPI_ADR_SPACE_TYPE space_id,
- ACPI_ADR_SPACE_HANDLER handler);
+ acpi_adr_space_handler handler);
acpi_status
acpi_install_gpe_handler (
u32 gpe_number,
u32 type,
- ACPI_GPE_HANDLER handler,
+ acpi_gpe_handler handler,
void *context);
acpi_status
@@ -253,17 +253,19 @@
acpi_status
acpi_remove_gpe_handler (
u32 gpe_number,
- ACPI_GPE_HANDLER handler);
+ acpi_gpe_handler handler);
acpi_status
acpi_enable_event (
u32 acpi_event,
- u32 type);
+ u32 type,
+ u32 flags);
acpi_status
acpi_disable_event (
u32 acpi_event,
- u32 type);
+ u32 type,
+ u32 flags);
acpi_status
acpi_clear_event (
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acstruct.h linux/drivers/acpi/include/acstruct.h
--- v2.4.13/linux/drivers/acpi/include/acstruct.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acstruct.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acstruct.h - Internal structs
- * $Revision: 5 $
+ * $Revision: 10 $
*
*****************************************************************************/
@@ -51,46 +51,50 @@
u8 data_type; /* To differentiate various internal objs MUST BE FIRST!*/\
acpi_owner_id owner_id; /* Owner of objects created during the walk */
u8 last_predicate; /* Result of last predicate */
+ u8 current_result; /* */
u8 next_op_info; /* Info about Next_op */
u8 num_operands; /* Stack pointer for Operands[] array */
- u8 current_result; /* */
+ u8 return_used;
+ u8 walk_type;
+ u16 current_sync_level; /* Mutex Sync (nested acquire) level */
+ u16 opcode; /* Current AML opcode */
+ u32 arg_count; /* push for fixed or var args */
+ u32 aml_offset;
+ u32 arg_types;
+ u32 method_breakpoint; /* For single stepping */
+ u32 parse_flags;
+ u32 prev_arg_types;
- struct acpi_walk_state *next; /* Next Walk_state in list */
+
+ u8 *aml_last_while;
+ struct acpi_node arguments[MTH_NUM_ARGS]; /* Control method arguments */
+ union acpi_operand_obj **caller_return_desc;
+ acpi_generic_state *control_state; /* List of control states (nested IFs) */
+ struct acpi_node local_variables[MTH_NUM_LOCALS]; /* Control method locals */
+ struct acpi_node *method_call_node; /* Called method Node*/
+ acpi_parse_object *method_call_op; /* Method_call Op if running a method */
+ union acpi_operand_obj *method_desc; /* Method descriptor if running a method */
+ struct acpi_node *method_node; /* Method Node if running a method */
+ acpi_parse_object *op; /* Current parser op */
+ union acpi_operand_obj *operands[OBJ_NUM_OPERANDS+1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
+ const acpi_opcode_info *op_info; /* Info on current opcode */
acpi_parse_object *origin; /* Start of walk [Obsolete] */
+ union acpi_operand_obj **params;
+ acpi_parse_state parser_state; /* Current state of parser */
+ union acpi_operand_obj *result_obj;
+ acpi_generic_state *results; /* Stack of accumulated results */
+ union acpi_operand_obj *return_desc; /* Return object, if any */
+ acpi_generic_state *scope_info; /* Stack of nested scopes */
/* TBD: Obsolete with removal of WALK procedure ? */
acpi_parse_object *prev_op; /* Last op that was processed */
acpi_parse_object *next_op; /* next op to be processed */
- acpi_generic_state *results; /* Stack of accumulated results */
- acpi_generic_state *control_state; /* List of control states (nested IFs) */
- acpi_generic_state *scope_info; /* Stack of nested scopes */
- acpi_parse_state *parser_state; /* Current state of parser */
- u8 *aml_last_while;
- const acpi_opcode_info *op_info; /* Info on current opcode */
acpi_parse_downwards descending_callback;
acpi_parse_upwards ascending_callback;
-
- union acpi_operand_obj *return_desc; /* Return object, if any */
- union acpi_operand_obj *method_desc; /* Method descriptor if running a method */
- struct acpi_node *method_node; /* Method Node if running a method */
- acpi_parse_object *method_call_op; /* Method_call Op if running a method */
- struct acpi_node *method_call_node; /* Called method Node*/
- union acpi_operand_obj *operands[OBJ_NUM_OPERANDS]; /* Operands passed to the interpreter */
- struct acpi_node arguments[MTH_NUM_ARGS]; /* Control method arguments */
- struct acpi_node local_variables[MTH_NUM_LOCALS]; /* Control method locals */
struct acpi_walk_list *walk_list;
- u32 parse_flags;
- u8 walk_type;
- u8 return_used;
- u16 opcode; /* Current AML opcode */
- u32 prev_arg_types;
- u16 current_sync_level; /* Mutex Sync (nested acquire) level */
-
- /* Debug support */
-
- u32 method_breakpoint;
+ struct acpi_walk_state *next; /* Next Walk_state in list */
} acpi_walk_state;
@@ -121,7 +125,7 @@
u16 object_count;
acpi_table_desc *table_desc;
-} ACPI_INIT_WALK_INFO;
+} acpi_init_walk_info;
/* Info used by TBD */
@@ -133,7 +137,7 @@
u16 num_INI;
acpi_table_desc *table_desc;
-} ACPI_DEVICE_WALK_INFO;
+} acpi_device_walk_info;
/* TBD: [Restructure] Merge with struct above */
@@ -142,16 +146,54 @@
{
u32 debug_level;
u32 owner_id;
+ u8 display_type;
+
+} acpi_walk_info;
+
+/* Display Types */
-} ACPI_WALK_INFO;
+#define ACPI_DISPLAY_SUMMARY 0
+#define ACPI_DISPLAY_OBJECTS 1
typedef struct acpi_get_devices_info
{
- ACPI_WALK_CALLBACK user_function;
+ acpi_walk_callback user_function;
void *context;
NATIVE_CHAR *hid;
-} ACPI_GET_DEVICES_INFO;
+} acpi_get_devices_info;
+
+
+typedef union acpi_aml_operands
+{
+ acpi_operand_object *operands[7];
+
+ struct
+ {
+ ACPI_OBJECT_INTEGER *type;
+ ACPI_OBJECT_INTEGER *code;
+ ACPI_OBJECT_INTEGER *argument;
+
+ } fatal;
+
+ struct
+ {
+ acpi_operand_object *source;
+ ACPI_OBJECT_INTEGER *index;
+ acpi_operand_object *target;
+
+ } index;
+
+ struct
+ {
+ acpi_operand_object *source;
+ ACPI_OBJECT_INTEGER *index;
+ ACPI_OBJECT_INTEGER *length;
+ acpi_operand_object *target;
+
+ } mid;
+
+} ACPI_AML_OPERANDS;
#endif
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actables.h linux/drivers/acpi/include/actables.h
--- v2.4.13/linux/drivers/acpi/include/actables.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actables.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actables.h - ACPI table management
- * $Revision: 31 $
+ * $Revision: 32 $
*
*****************************************************************************/
@@ -176,10 +176,6 @@
/*
* tbutils - common table utilities
*/
-
-u8
-acpi_tb_system_table_pointer (
- void *where);
acpi_status
acpi_tb_map_acpi_table (
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actbl.h linux/drivers/acpi/include/actbl.h
--- v2.4.13/linux/drivers/acpi/include/actbl.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actbl.h Wed Oct 24 14:06:22 2001
@@ -84,7 +84,7 @@
u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */
u32 rsdt_physical_address; /* 32-bit physical address of RSDT */
u32 length; /* XSDT Length in bytes including hdr */
- UINT64 xsdt_physical_address; /* 64-bit physical address of XSDT */
+ u64 xsdt_physical_address; /* 64-bit physical address of XSDT */
u8 extended_checksum; /* Checksum of entire table */
NATIVE_CHAR reserved [3]; /* reserved field must be 0 */
@@ -110,7 +110,7 @@
typedef struct /* Common FACS for internal use */
{
u32 *global_lock;
- UINT64 *firmware_waking_vector;
+ u64 *firmware_waking_vector;
u8 vector_width;
} acpi_common_facs;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actbl1.h linux/drivers/acpi/include/actbl1.h
--- v2.4.13/linux/drivers/acpi/include/actbl1.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actbl1.h Wed Oct 24 14:06:22 2001
@@ -51,7 +51,7 @@
u32 hardware_signature; /* hardware configuration signature */
u32 firmware_waking_vector; /* ACPI OS waking vector */
u32 global_lock; /* Global Lock */
- u32 S4_bios_f : 1; /* Indicates if S4_bIOS support is present */
+ u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */
u32 reserved1 : 31; /* must be 0 */
u8 resverved3 [40]; /* reserved - must be zero */
@@ -73,7 +73,7 @@
u32 smi_cmd; /* Port address of SMI command port */
u8 acpi_enable; /* value to write to smi_cmd to enable ACPI */
u8 acpi_disable; /* value to write to smi_cmd to disable ACPI */
- u8 S4_bios_req; /* Value to write to SMI CMD to enter S4_bIOS state */
+ u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
u8 reserved2; /* reserved - must be zero */
u32 pm1a_evt_blk; /* Port address of Power Mgt 1a Acpi_event Reg Blk */
u32 pm1b_evt_blk; /* Port address of Power Mgt 1b Acpi_event Reg Blk */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actbl2.h linux/drivers/acpi/include/actbl2.h
--- v2.4.13/linux/drivers/acpi/include/actbl2.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actbl2.h Wed Oct 24 14:06:22 2001
@@ -65,7 +65,7 @@
typedef struct
{
acpi_table_header header; /* Table header */
- UINT64 table_offset_entry [1]; /* Array of pointers to */
+ u64 table_offset_entry [1]; /* Array of pointers to */
/* other tables' headers */
} XSDT_DESCRIPTOR_REV2;
@@ -80,9 +80,9 @@
u32 hardware_signature; /* hardware configuration signature */
u32 firmware_waking_vector; /* 32bit physical address of the Firmware Waking Vector. */
u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */
- u32 S4_bios_f : 1; /* Indicates if S4_bIOS support is present */
+ u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */
u32 reserved1 : 31; /* must be 0 */
- UINT64 Xfirmware_waking_vector; /* 64bit physical address of the Firmware Waking Vector. */
+ u64 Xfirmware_waking_vector; /* 64bit physical address of the Firmware Waking Vector. */
u8 version; /* Version of this table */
u8 reserved3 [31]; /* reserved - must be zero */
@@ -98,7 +98,7 @@
u8 register_bit_width; /* Size in bits of given register */
u8 register_bit_offset; /* Bit offset within the register */
u8 reserved; /* Must be 0 */
- UINT64 address; /* 64-bit address of struct or register */
+ u64 address; /* 64-bit address of struct or register */
} acpi_generic_address;
@@ -117,7 +117,7 @@
u32 smi_cmd; /* Port address of SMI command port */
u8 acpi_enable; /* value to write to smi_cmd to enable ACPI */
u8 acpi_disable; /* value to write to smi_cmd to disable ACPI */
- u8 S4_bios_req; /* Value to write to SMI CMD to enter S4_bIOS state */
+ u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
u8 pstate_cnt; /* processor performance state control*/
u32 V1_pm1a_evt_blk; /* Port address of Power Mgt 1a Acpi_event Reg Blk */
u32 V1_pm1b_evt_blk; /* Port address of Power Mgt 1b Acpi_event Reg Blk */
@@ -139,8 +139,8 @@
u16 plvl3_lat; /* worst case HW latency to enter/exit C3 state */
u16 flush_size; /* number of flush strides that need to be read */
u16 flush_stride; /* Processor's memory cache line width, in bytes */
- u8 duty_offset; /* Processor’s duty cycle index in processor's P_CNT reg*/
- u8 duty_width; /* Processor’s duty cycle value bit width in P_CNT register.*/
+ u8 duty_offset; /* Processor_’s duty cycle index in processor's P_CNT reg*/
+ u8 duty_width; /* Processor_’s duty cycle value bit width in P_CNT register.*/
u8 day_alrm; /* index to day-of-month alarm in RTC CMOS RAM */
u8 mon_alrm; /* index to month-of-year alarm in RTC CMOS RAM */
u8 century; /* index to century in RTC CMOS RAM */
@@ -166,8 +166,8 @@
acpi_generic_address reset_register; /* Reset register address in GAS format */
u8 reset_value; /* Value to write to the Reset_register port to reset the system. */
u8 reserved7[3]; /* These three bytes must be zero */
- UINT64 Xfirmware_ctrl; /* 64-bit physical address of FACS */
- UINT64 Xdsdt; /* 64-bit physical address of DSDT */
+ u64 Xfirmware_ctrl; /* 64-bit physical address of FACS */
+ u64 Xdsdt; /* 64-bit physical address of DSDT */
acpi_generic_address Xpm1a_evt_blk; /* Extended Power Mgt 1a Acpi_event Reg Blk address */
acpi_generic_address Xpm1b_evt_blk; /* Extended Power Mgt 1b Acpi_event Reg Blk address */
acpi_generic_address Xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actbl71.h linux/drivers/acpi/include/actbl71.h
--- v2.4.13/linux/drivers/acpi/include/actbl71.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actbl71.h Wed Oct 24 14:06:22 2001
@@ -41,7 +41,7 @@
/* Only for clarity in declarations */
-typedef UINT64 IO_ADDRESS;
+typedef u64 IO_ADDRESS;
#pragma pack(1)
@@ -51,7 +51,7 @@
u8 checksum; /* to make sum of struct == 0 */
NATIVE_CHAR oem_id [6]; /* OEM identification */
u8 reserved; /* Must be 0 for 1.0, 2 for 2.0 */
- UINT64 rsdt_physical_address; /* 64-bit physical address of RSDT */
+ u64 rsdt_physical_address; /* 64-bit physical address of RSDT */
} RSDP_DESCRIPTOR_REV071;
@@ -63,7 +63,7 @@
{
acpi_table_header header; /* Table header */
u32 reserved_pad; /* IA64 alignment, must be 0 */
- UINT64 table_offset_entry [1]; /* Array of pointers to other */
+ u64 table_offset_entry [1]; /* Array of pointers to other */
/* tables' headers */
} RSDT_DESCRIPTOR_REV071;
@@ -78,9 +78,9 @@
u32 length; /* length of structure, in bytes */
u32 hardware_signature; /* hardware configuration signature */
u32 reserved4; /* must be 0 */
- UINT64 firmware_waking_vector; /* ACPI OS waking vector */
- UINT64 global_lock; /* Global Lock */
- u32 S4_bios_f : 1; /* Indicates if S4_bIOS support is present */
+ u64 firmware_waking_vector; /* ACPI OS waking vector */
+ u64 global_lock; /* Global Lock */
+ u32 S4bios_f : 1; /* Indicates if S4BIOS support is present */
u32 reserved1 : 31; /* must be 0 */
u8 reserved3 [28]; /* reserved - must be zero */
@@ -95,24 +95,24 @@
{
acpi_table_header header; /* table header */
u32 reserved_pad; /* IA64 alignment, must be 0 */
- UINT64 firmware_ctrl; /* 64-bit Physical address of FACS */
- UINT64 dsdt; /* 64-bit Physical address of DSDT */
+ u64 firmware_ctrl; /* 64-bit Physical address of FACS */
+ u64 dsdt; /* 64-bit Physical address of DSDT */
u8 model; /* System Interrupt Model */
u8 address_space; /* Address Space Bitmask */
u16 sci_int; /* System vector of SCI interrupt */
u8 acpi_enable; /* value to write to smi_cmd to enable ACPI */
u8 acpi_disable; /* value to write to smi_cmd to disable ACPI */
- u8 S4_bios_req; /* Value to write to SMI CMD to enter S4_bIOS state */
+ u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */
u8 reserved2; /* reserved - must be zero */
- UINT64 smi_cmd; /* Port address of SMI command port */
- UINT64 pm1a_evt_blk; /* Port address of Power Mgt 1a Acpi_event Reg Blk */
- UINT64 pm1b_evt_blk; /* Port address of Power Mgt 1b Acpi_event Reg Blk */
- UINT64 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
- UINT64 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */
- UINT64 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */
- UINT64 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
- UINT64 gpe0blk; /* Port addr of General Purpose Acpi_event 0 Reg Blk */
- UINT64 gpe1_blk; /* Port addr of General Purpose Acpi_event 1 Reg Blk */
+ u64 smi_cmd; /* Port address of SMI command port */
+ u64 pm1a_evt_blk; /* Port address of Power Mgt 1a Acpi_event Reg Blk */
+ u64 pm1b_evt_blk; /* Port address of Power Mgt 1b Acpi_event Reg Blk */
+ u64 pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */
+ u64 pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */
+ u64 pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */
+ u64 pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */
+ u64 gpe0blk; /* Port addr of General Purpose Acpi_event 0 Reg Blk */
+ u64 gpe1_blk; /* Port addr of General Purpose Acpi_event 1 Reg Blk */
u8 pm1_evt_len; /* Byte Length of ports at pm1_x_evt_blk */
u8 pm1_cnt_len; /* Byte Length of ports at pm1_x_cnt_blk */
u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/actypes.h linux/drivers/acpi/include/actypes.h
--- v2.4.13/linux/drivers/acpi/include/actypes.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/actypes.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actypes.h - Common data types for the entire ACPI subsystem
- * $Revision: 188 $
+ * $Revision: 193 $
*
*****************************************************************************/
@@ -68,9 +68,8 @@
typedef UINT64 ACPI_IO_ADDRESS;
typedef UINT64 ACPI_PHYSICAL_ADDRESS;
-#define ALIGNED_ADDRESS_BOUNDARY 0x00000008
-
-/* (No hardware alignment support in IA64) */
+#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */
+#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */
#elif _IA16
@@ -101,6 +100,7 @@
#define ALIGNED_ADDRESS_BOUNDARY 0x00000002
#define _HW_ALIGNMENT_SUPPORT
+#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */
/*
* (16-bit only) internal integers must be 32-bits, so
@@ -196,11 +196,18 @@
typedef struct
{
- u32 lo;
- u32 hi;
+ u32 lo;
+ u32 hi;
} uint64_struct;
+typedef union
+{
+ u64 full;
+ uint64_struct part;
+
+} uint64_overlay;
+
/*
* Acpi integer width. In ACPI version 1, integers are
@@ -220,17 +227,23 @@
#define ACPI_MAX_BCD_DIGITS 8
#define ACPI_MAX_DECIMAL_DIGITS 10
+#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */
+
+
#else
/* 64-bit integers */
-typedef UINT64 acpi_integer;
+typedef u64 acpi_integer;
#define ACPI_INTEGER_MAX ACPI_UINT64_MAX
#define ACPI_INTEGER_BIT_SIZE 64
#define ACPI_MAX_BCD_VALUE 9999999999999999
#define ACPI_MAX_BCD_DIGITS 16
#define ACPI_MAX_DECIMAL_DIGITS 19
+#ifdef _IA64
+#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */
+#endif
#endif
@@ -453,24 +466,36 @@
#define ACPI_EVENT_EDGE_TRIGGERED (acpi_event_type) 2
/*
+ * GPEs
+ */
+#define ACPI_EVENT_ENABLE 0x1
+#define ACPI_EVENT_WAKE_ENABLE 0x2
+
+#define ACPI_EVENT_DISABLE 0x1
+#define ACPI_EVENT_WAKE_DISABLE 0x2
+
+
+/*
* Acpi_event Status:
* -------------
* The encoding of acpi_event_status is illustrated below.
* Note that a set bit (1) indicates the property is TRUE
* (e.g. if bit 0 is set then the event is enabled).
- * +---------------+-+-+
- * | Bits 31:2 |1|0|
- * +---------------+-+-+
- * | | |
- * | | +- Enabled?
- * | +--- Set?
+ * +-------------+-+-+-+
+ * | Bits 31:3 |2|1|0|
+ * +-------------+-+-+-+
+ * | | | |
+ * | | | +- Enabled?
+ * | | +--- Enabled for wake?
+ * | +----- Set?
* +-----------
*/
typedef u32 acpi_event_status;
#define ACPI_EVENT_FLAG_DISABLED (acpi_event_status) 0x00
#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01
-#define ACPI_EVENT_FLAG_SET (acpi_event_status) 0x02
+#define ACPI_EVENT_FLAG_WAKE_ENABLED (acpi_event_status) 0x02
+#define ACPI_EVENT_FLAG_SET (acpi_event_status) 0x04
/* Notify types */
@@ -604,7 +629,7 @@
{
u32 count;
-} ACPI_TABLE_INFO;
+} acpi_table_info;
/*
@@ -621,7 +646,7 @@
u32 debug_level;
u32 debug_layer;
u32 num_table_types;
- ACPI_TABLE_INFO table_info [NUM_ACPI_TABLES];
+ acpi_table_info table_info [NUM_ACPI_TABLES];
} acpi_system_info;
@@ -631,15 +656,15 @@
*/
typedef
-u32 (*ACPI_EVENT_HANDLER) (
+u32 (*acpi_event_handler) (
void *context);
typedef
-void (*ACPI_GPE_HANDLER) (
+void (*acpi_gpe_handler) (
void *context);
typedef
-void (*ACPI_NOTIFY_HANDLER) (
+void (*acpi_notify_handler) (
acpi_handle device,
u32 value,
void *context);
@@ -651,7 +676,7 @@
#define ACPI_WRITE_ADR_SPACE 2
typedef
-acpi_status (*ACPI_ADR_SPACE_HANDLER) (
+acpi_status (*acpi_adr_space_handler) (
u32 function,
ACPI_PHYSICAL_ADDRESS address,
u32 bit_width,
@@ -659,11 +684,11 @@
void *handler_context,
void *region_context);
-#define ACPI_DEFAULT_HANDLER ((ACPI_ADR_SPACE_HANDLER) NULL)
+#define ACPI_DEFAULT_HANDLER ((acpi_adr_space_handler) NULL)
typedef
-acpi_status (*ACPI_ADR_SPACE_SETUP) (
+acpi_status (*acpi_adr_space_setup) (
acpi_handle region_handle,
u32 function,
void *handler_context,
@@ -673,7 +698,7 @@
#define ACPI_REGION_DEACTIVATE 1
typedef
-acpi_status (*ACPI_WALK_CALLBACK) (
+acpi_status (*acpi_walk_callback) (
acpi_handle obj_handle,
u32 nesting_level,
void *context,
@@ -758,7 +783,7 @@
/*
* IO Attributes
- * The ISA IO ranges are: n000-n0FFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh.
+ * The ISA IO ranges are: n000-n0FFh, n400-n4_fFh, n800-n8_fFh, n_c00-n_cFFh.
* The non-ISA IO ranges are: n100-n3_fFh, n500-n7_fFh, n900-n_bFFh, n_cD0-n_fFFh.
*/
#define NON_ISA_ONLY_RANGES (u8) 0x01
@@ -988,11 +1013,11 @@
u32 min_address_fixed;
u32 max_address_fixed;
acpi_resource_attribute attribute;
- UINT64 granularity;
- UINT64 min_address_range;
- UINT64 max_address_range;
- UINT64 address_translation_offset;
- UINT64 address_length;
+ u64 granularity;
+ u64 min_address_range;
+ u64 max_address_range;
+ u64 address_translation_offset;
+ u64 address_length;
acpi_resource_source resource_source;
} acpi_resource_address64;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/acutils.h linux/drivers/acpi/include/acutils.h
--- v2.4.13/linux/drivers/acpi/include/acutils.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/acutils.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
- * $Revision: 113 $
+ * $Revision: 117 $
*
*****************************************************************************/
@@ -270,47 +270,47 @@
void
acpi_ut_trace (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info);
+ acpi_debug_print_info *dbg_info);
void
acpi_ut_trace_ptr (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
void *pointer);
void
acpi_ut_trace_u32 (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
u32 integer);
void
acpi_ut_trace_str (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
NATIVE_CHAR *string);
void
acpi_ut_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info);
+ acpi_debug_print_info *dbg_info);
void
acpi_ut_status_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
acpi_status status);
void
acpi_ut_value_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
acpi_integer value);
void
acpi_ut_ptr_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
u8 *ptr);
void
@@ -342,17 +342,17 @@
acpi_ut_debug_print (
u32 requested_debug_level,
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
char *format,
- ...);
+ ...) ACPI_PRINTF_LIKE_FUNC;
void
acpi_ut_debug_print_raw (
u32 requested_debug_level,
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
char *format,
- ...);
+ ...) ACPI_PRINTF_LIKE_FUNC;
/*
@@ -389,6 +389,7 @@
#define METHOD_NAME__REG "_REG"
#define METHOD_NAME__SEG "_SEG"
#define METHOD_NAME__BBN "_BBN"
+#define METHOD_NAME__PRT "_PRT"
acpi_status
@@ -400,7 +401,7 @@
acpi_status
acpi_ut_execute_HID (
acpi_namespace_node *device_node,
- ACPI_DEVICE_ID *hid);
+ acpi_device_id *hid);
acpi_status
acpi_ut_execute_STA (
@@ -410,7 +411,7 @@
acpi_status
acpi_ut_execute_UID (
acpi_namespace_node *device_node,
- ACPI_DEVICE_ID *uid);
+ acpi_device_id *uid);
/*
@@ -562,9 +563,23 @@
void);
/*
- * Ututils
+ * utmisc
*/
+acpi_status
+acpi_ut_divide (
+ acpi_integer *in_dividend,
+ acpi_integer *in_divisor,
+ acpi_integer *out_quotient,
+ acpi_integer *out_remainder);
+
+acpi_status
+acpi_ut_short_divide (
+ acpi_integer *in_dividend,
+ u32 divisor,
+ acpi_integer *out_quotient,
+ u32 *out_remainder);
+
u8
acpi_ut_valid_acpi_name (
u32 name);
@@ -638,7 +653,7 @@
void);
void
-acpi_ut_dump_current_allocations (
+acpi_ut_dump_allocations (
u32 component,
NATIVE_CHAR *module);
#endif
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/amlcode.h linux/drivers/acpi/include/amlcode.h
--- v2.4.13/linux/drivers/acpi/include/amlcode.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/amlcode.h Wed Oct 24 14:06:22 2001
@@ -3,7 +3,7 @@
* Name: amlcode.h - Definitions for AML, as included in "definition blocks"
* Declarations and definitions contained herein are derived
* directly from the ACPI specification.
- * $Revision: 53 $
+ * $Revision: 58 $
*
*****************************************************************************/
@@ -266,47 +266,96 @@
#define OPGRP_FIELD 0x02
#define OPGRP_BYTELIST 0x04
-#define OPTYPE_UNDEFINED 0
+/*
+ * Opcode information
+ */
-#define OPTYPE_LITERAL 1
-#define OPTYPE_CONSTANT 2
-#define OPTYPE_METHOD_ARGUMENT 3
-#define OPTYPE_LOCAL_VARIABLE 4
-#define OPTYPE_DATA_TERM 5
-
-/* Type 1 opcodes */
-
-#define OPTYPE_MONADIC1 6
-#define OPTYPE_DYADIC1 7
-
-/* Type 2 opcodes */
+/* Opcode flags */
-#define OPTYPE_MONADIC2 8
-#define OPTYPE_MONADIC2_r 9
-#define OPTYPE_DYADIC2 10
-#define OPTYPE_DYADIC2_r 11
-#define OPTYPE_DYADIC2_s 12
+#define AML_HAS_ARGS 0x0800
+#define AML_HAS_TARGET 0x0400
+#define AML_HAS_RETVAL 0x0200
+#define AML_NSOBJECT 0x0100
+#define AML_NSOPCODE 0x0080
+#define AML_NSNODE 0x0040
+#define AML_NAMED 0x0020
+#define AML_DEFER 0x0010
+#define AML_FIELD 0x0008
+#define AML_CREATE 0x0004
+#define AML_MATH 0x0002
+#define AML_LOGICAL 0x0001
+
+/* Convenient flag groupings */
+
+#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */
+#define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */
+#define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET
+#define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Monadic2_r */
+#define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */
+#define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */
+#define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Dyadic2_r */
+#define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
+#define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS
+#define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
+#define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL
-/* Multi-operand (>=3) opcodes */
-#define OPTYPE_TRIADIC 13
-#define OPTYPE_QUADRADIC 14
-#define OPTYPE_HEXADIC 15
+/*
+ * The opcode Type is used in a dispatch table, do not change
+ * without updating the table.
+ */
+#define AML_TYPE_EXEC_1A_0T_0R 0x00 /* Monadic1 */
+#define AML_TYPE_EXEC_1A_0T_1R 0x01 /* Monadic2 */
+#define AML_TYPE_EXEC_1A_1T_0R 0x02
+#define AML_TYPE_EXEC_1A_1T_1R 0x03 /* Monadic2_r */
+#define AML_TYPE_EXEC_2A_0T_0R 0x04 /* Dyadic1 */
+#define AML_TYPE_EXEC_2A_0T_1R 0x05 /* Dyadic2 */
+#define AML_TYPE_EXEC_2A_1T_1R 0x06 /* Dyadic2_r */
+#define AML_TYPE_EXEC_2A_2T_1R 0x07
+#define AML_TYPE_EXEC_3A_0T_0R 0x08
+#define AML_TYPE_EXEC_3A_1T_1R 0x09
+#define AML_TYPE_EXEC_6A_0T_1R 0x0A
+/* End of types used in dispatch table */
+
+#define AML_TYPE_LITERAL 0x0B
+#define AML_TYPE_CONSTANT 0x0C
+#define AML_TYPE_METHOD_ARGUMENT 0x0D
+#define AML_TYPE_LOCAL_VARIABLE 0x0E
+#define AML_TYPE_DATA_TERM 0x0F
/* Generic for an op that returns a value */
-#define OPTYPE_METHOD_CALL 16
+#define AML_TYPE_METHOD_CALL 0x10
/* Misc */
-#define OPTYPE_CREATE_FIELD 17
-#define OPTYPE_CONTROL 18
-#define OPTYPE_RECONFIGURATION 19
-#define OPTYPE_NAMED_OBJECT 20
-#define OPTYPE_RETURN 21
+#define AML_TYPE_CREATE_FIELD 0x11
+#define AML_TYPE_CONTROL 0x12
+#define AML_TYPE_NAMED_NO_OBJ 0x13
+#define AML_TYPE_NAMED_FIELD 0x14
+#define AML_TYPE_NAMED_SIMPLE 0x15
+#define AML_TYPE_NAMED_COMPLEX 0x16
+#define AML_TYPE_RETURN 0x17
+
+#define AML_TYPE_UNDEFINED 0x18
+#define AML_TYPE_BOGUS 0x19
+
-#define OPTYPE_BOGUS 22
+/*
+ * Opcode classes
+ */
+#define AML_CLASS_EXECUTE 0x00
+#define AML_CLASS_CREATE 0x01
+#define AML_CLASS_ARGUMENT 0x02
+#define AML_CLASS_NAMED_OBJECT 0x03
+#define AML_CLASS_CONTROL 0x04
+#define AML_CLASS_ASCII 0x05
+#define AML_CLASS_PREFIX 0x06
+#define AML_CLASS_INTERNAL 0x07
+#define AML_CLASS_RETURN_VALUE 0x08
+#define AML_CLASS_METHOD_CALL 0x09
+#define AML_CLASS_UNKNOWN 0x0A
/* Predefined Operation Region Space_iDs */
@@ -406,18 +455,5 @@
#define USER_REGION_BEGIN 0x80
-/*
- * AML tables
- */
-
-#ifdef DEFINE_AML_GLOBALS
-
-/* External declarations for the AML tables */
-
-extern u8 acpi_gbl_aml [NUM_OPCODES];
-extern u16 acpi_gbl_pfx [NUM_OPCODES];
-
-
-#endif /* DEFINE_AML_GLOBALS */
#endif /* __AMLCODE_H__ */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/platform/acenv.h linux/drivers/acpi/include/platform/acenv.h
--- v2.4.13/linux/drivers/acpi/include/platform/acenv.h Sun Sep 23 11:40:56 2001
+++ linux/drivers/acpi/include/platform/acenv.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acenv.h - Generation environment specific items
- * $Revision: 76 $
+ * $Revision: 77 $
*
*****************************************************************************/
@@ -126,6 +126,12 @@
/* Name of host operating system (returned by the _OS_ namespace object) */
#define ACPI_OS_NAME "Intel ACPI/CA Core Subsystem"
+
+/* This macro is used to tag functions as "printf-like" because
+ * some compilers can catch printf format string problems. MSVC
+ * doesn't, so this is proprocessed away.
+ */
+#define ACPI_PRINTF_LIKE_FUNC
#endif
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/platform/acgcc.h linux/drivers/acpi/include/platform/acgcc.h
--- v2.4.13/linux/drivers/acpi/include/platform/acgcc.h Tue Oct 23 22:48:50 2001
+++ linux/drivers/acpi/include/platform/acgcc.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acgcc.h - GCC specific defines, etc.
- * $Revision: 9 $
+ * $Revision: 14 $
*
*****************************************************************************/
@@ -93,6 +93,7 @@
#else /* DO IA32 */
+
#define COMPILER_DEPENDENT_UINT64 unsigned long long
#define ACPI_ASM_MACROS
#define causeinterrupt(level)
@@ -100,7 +101,6 @@
#define disable() __cli()
#define enable() __sti()
#define halt() __asm__ __volatile__ ("sti; hlt":::"memory")
-#define wbinvd() __asm__ __volatile__ ("wbinvd":::"memory")
/*! [Begin] no source code translation
*
@@ -139,8 +139,30 @@
:"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~3L):"dx"); \
} while(0)
+
+/*
+ * Math helper asm macros
+ */
+#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
+ asm("divl %2;" \
+ :"=a"(q32), "=d"(r32) \
+ :"r"(d32), \
+ "0"(n_lo), "1"(n_hi))
+
+
+#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
+ asm("shrl $1,%2;" \
+ "rcrl $1,%3;" \
+ :"=r"(n_hi), "=r"(n_lo) \
+ :"0"(n_hi), "1"(n_lo))
+
/*! [End] no source code translation !*/
#endif /* IA 32 */
+
+/* This macro is used to tag functions as "printf-like" because
+ * some compilers (like GCC) can catch printf format string problems.
+ */
+#define ACPI_PRINTF_LIKE_FUNC __attribute__ ((__format__ (__printf__, 4, 5)))
#endif /* __ACGCC_H__ */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/include/platform/aclinux.h linux/drivers/acpi/include/platform/aclinux.h
--- v2.4.13/linux/drivers/acpi/include/platform/aclinux.h Tue Jul 3 17:08:19 2001
+++ linux/drivers/acpi/include/platform/aclinux.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclinux.h - OS specific defines, etc.
- * $Revision: 13 $
+ * $Revision: 14 $
*
*****************************************************************************/
@@ -57,15 +57,6 @@
#undef DEBUGGER_THREADING
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
-
-#ifndef _IA64
-/* Linux ia32 can't do int64 well */
-#define ACPI_NO_INTEGER64_SUPPORT
-/* And the ia32 kernel doesn't include 64-bit divide support */
-#define ACPI_DIV64(dividend, divisor) do_div(dividend, divisor)
-#else
-#define ACPI_DIV64(dividend, divisor) ACPI_DIVIDE(dividend, divisor)
-#endif
#endif /* __ACLINUX_H__ */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsaccess.c linux/drivers/acpi/namespace/nsaccess.c
--- v2.4.13/linux/drivers/acpi/namespace/nsaccess.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsaccess.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsaccess - Top-level functions for accessing ACPI namespace
- * $Revision: 133 $
+ * $Revision: 135 $
*
******************************************************************************/
@@ -185,6 +185,10 @@
/* Store pointer to value descriptor in the Node */
acpi_ns_attach_object (new_node, obj_desc, obj_desc->common.type);
+
+ /* Remove local reference to the object */
+
+ acpi_ut_remove_reference (obj_desc);
}
}
@@ -434,7 +438,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "["));
for (i = 0; i < num_segments; i++) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, "%4.4s/", &pathname[i * 4]));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, "%4.4s/", (char*)&pathname[i * 4]));
}
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, "]\n"));
#endif
@@ -474,8 +478,8 @@
/* Name not found in ACPI namespace */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
- "Name [%4.4s] not found in scope %X\n",
- &simple_name, current_node));
+ "Name [%4.4s] not found in scope %p\n",
+ (char*)&simple_name, current_node));
}
return_ACPI_STATUS (status);
@@ -507,7 +511,7 @@
REPORT_WARNING (
("Ns_lookup: %4.4s, type %X, checking for type %X\n",
- &simple_name, this_node->type, type_to_check_for));
+ (char*)&simple_name, this_node->type, type_to_check_for));
}
/*
@@ -525,7 +529,7 @@
* More segments or the type implies enclosed scope,
* and the next scope has not been allocated.
*/
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Load mode=%X This_node=%X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Load mode=%X This_node=%p\n",
interpreter_mode, this_node));
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsalloc.c linux/drivers/acpi/namespace/nsalloc.c
--- v2.4.13/linux/drivers/acpi/namespace/nsalloc.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsalloc.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsalloc - Namespace allocation and deletion utilities
- * $Revision: 56 $
+ * $Revision: 60 $
*
******************************************************************************/
@@ -210,7 +210,7 @@
* real definition is found later.
*/
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "[%4.4s] is a forward reference\n",
- &node->name));
+ (char*)&node->name));
}
/*
@@ -235,7 +235,7 @@
}
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s added to %p at %p\n",
- &node->name, parent_node, node));
+ (char*)&node->name, parent_node, node));
/*
* Increment the reference count(s) of all parents up to
@@ -297,7 +297,7 @@
/* Grandchildren should have all been deleted already */
if (child_node->child) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Found a grandchild! P=%X C=%X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Found a grandchild! P=%p C=%p\n",
parent_node, child_node));
}
@@ -309,12 +309,9 @@
child_node, acpi_gbl_current_node_count));
/*
- * Detach an object if there is one
+ * Detach an object if there is one, then free the child node
*/
- if (child_node->object) {
- acpi_ns_detach_object (child_node);
- }
-
+ acpi_ns_detach_object (child_node);
ACPI_MEM_FREE (child_node);
/* And move on to the next child in the list */
@@ -349,9 +346,8 @@
acpi_ns_delete_namespace_subtree (
acpi_namespace_node *parent_node)
{
- acpi_namespace_node *child_node;
- acpi_operand_object *obj_desc;
- u32 level;
+ acpi_namespace_node *child_node = NULL;
+ u32 level = 1;
FUNCTION_TRACE ("Ns_delete_namespace_subtree");
@@ -361,39 +357,26 @@
return_ACPI_STATUS (AE_OK);
}
-
- child_node = 0;
- level = 1;
-
/*
* Traverse the tree of objects until we bubble back up
* to where we started.
*/
while (level > 0) {
- /*
- * Get the next typed object in this scope.
- * Null returned if not found
- */
- child_node = acpi_ns_get_next_object (ACPI_TYPE_ANY, parent_node,
+ /* Get the next node in this scope (NULL if none) */
+
+ child_node = acpi_ns_get_next_node (ACPI_TYPE_ANY, parent_node,
child_node);
if (child_node) {
- /*
- * Found an object - delete the object within
- * the Value field
- */
- obj_desc = acpi_ns_get_attached_object (child_node);
- if (obj_desc) {
- acpi_ns_detach_object (child_node);
- acpi_ut_remove_reference (obj_desc);
- }
+ /* Found a child node - detach any attached object */
+ acpi_ns_detach_object (child_node);
- /* Check if this object has any children */
+ /* Check if this node has any children */
- if (acpi_ns_get_next_object (ACPI_TYPE_ANY, child_node, 0)) {
+ if (acpi_ns_get_next_node (ACPI_TYPE_ANY, child_node, 0)) {
/*
- * There is at least one child of this object,
- * visit the object
+ * There is at least one child of this node,
+ * visit the node
*/
level++;
parent_node = child_node;
@@ -403,8 +386,8 @@
else {
/*
- * No more children in this object.
- * We will move up to the grandparent.
+ * No more children of this parent node.
+ * Move up to the grandparent.
*/
level--;
@@ -414,17 +397,16 @@
*/
acpi_ns_delete_children (parent_node);
- /* New "last child" is this parent object */
+ /* New "last child" is this parent node */
child_node = parent_node;
- /* Now we can move up the tree to the grandparent */
+ /* Move up the tree to the grandparent */
parent_node = acpi_ns_get_parent_object (parent_node);
}
}
-
return_ACPI_STATUS (AE_OK);
}
@@ -433,13 +415,13 @@
*
* FUNCTION: Acpi_ns_remove_reference
*
- * PARAMETERS: Node - Named object whose reference count is to be
+ * PARAMETERS: Node - Named node whose reference count is to be
* decremented
*
* RETURN: None.
*
* DESCRIPTION: Remove a Node reference. Decrements the reference count
- * of all parent Nodes up to the root. Any object along
+ * of all parent Nodes up to the root. Any node along
* the way that reaches zero references is freed.
*
******************************************************************************/
@@ -455,19 +437,19 @@
/*
- * Decrement the reference count(s) of this object and all
- * objects up to the root, Delete anything with zero remaining references.
+ * Decrement the reference count(s) of this node and all
+ * nodes up to the root, Delete anything with zero remaining references.
*/
next_node = node;
while (next_node) {
- /* Decrement the reference count on this object*/
+ /* Decrement the reference count on this node*/
next_node->reference_count--;
- /* Delete the object if no more references */
+ /* Delete the node if no more references */
if (!next_node->reference_count) {
- /* Delete all children and delete the object */
+ /* Delete all children and delete the node */
acpi_ns_delete_children (next_node);
acpi_ns_delete_node (next_node);
@@ -500,7 +482,6 @@
{
acpi_namespace_node *child_node;
u32 level;
- acpi_operand_object *obj_desc;
acpi_namespace_node *parent_node;
@@ -512,38 +493,28 @@
level = 1;
/*
- * Traverse the tree of objects until we bubble back up
+ * Traverse the tree of nodes until we bubble back up
* to where we started.
*/
while (level > 0) {
- /*
- * Get the next typed object in this scope.
- * Null returned if not found
- */
- child_node = acpi_ns_get_next_object (ACPI_TYPE_ANY, parent_node,
- child_node);
+ /* Get the next node in this scope (NULL if none) */
+ child_node = acpi_ns_get_next_node (ACPI_TYPE_ANY, parent_node,
+ child_node);
if (child_node) {
if (child_node->owner_id == owner_id) {
- /*
- * Found an object - delete the object within
- * the Value field
- */
- obj_desc = acpi_ns_get_attached_object (child_node);
- if (obj_desc) {
- acpi_ns_detach_object (child_node);
- acpi_ut_remove_reference (obj_desc);
- }
+ /* Found a child node - detach any attached object */
+
+ acpi_ns_detach_object (child_node);
}
- /* Check if this object has any children */
+ /* Check if this node has any children */
- if (acpi_ns_get_next_object (ACPI_TYPE_ANY, child_node, 0)) {
+ if (acpi_ns_get_next_node (ACPI_TYPE_ANY, child_node, 0)) {
/*
- * There is at least one child of this object,
- * visit the object
+ * There is at least one child of this node,
+ * visit the node
*/
-
level++;
parent_node = child_node;
child_node = 0;
@@ -556,7 +527,8 @@
else {
/*
- * No more children in this object. Move up to grandparent.
+ * No more children of this parent node.
+ * Move up to the grandparent.
*/
level--;
@@ -566,16 +538,15 @@
}
}
- /* New "last child" is this parent object */
+ /* New "last child" is this parent node */
child_node = parent_node;
- /* Now we can move up the tree to the grandparent */
+ /* Move up the tree to the grandparent */
parent_node = acpi_ns_get_parent_object (parent_node);
}
}
-
return_ACPI_STATUS (AE_OK);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsdump.c linux/drivers/acpi/namespace/nsdump.c
--- v2.4.13/linux/drivers/acpi/namespace/nsdump.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsdump.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsdump - table dumping routines for debug
- * $Revision: 99 $
+ * $Revision: 105 $
*
*****************************************************************************/
@@ -28,6 +28,7 @@
#include "acinterp.h"
#include "acnamesp.h"
#include "actables.h"
+#include "acparser.h"
#define _COMPONENT ACPI_NAMESPACE
@@ -108,9 +109,8 @@
void *context,
void **return_value)
{
- ACPI_WALK_INFO *info = (ACPI_WALK_INFO *) context;
+ acpi_walk_info *info = (acpi_walk_info *) context;
acpi_namespace_node *this_node;
- u8 *value;
acpi_operand_object *obj_desc = NULL;
acpi_object_type8 obj_type;
acpi_object_type8 type;
@@ -118,12 +118,13 @@
u32 downstream_sibling_mask = 0;
u32 level_tmp;
u32 which_bit;
+ u32 i;
PROC_NAME ("Ns_dump_one_object");
- this_node = acpi_ns_convert_handle_to_entry (obj_handle);
+ this_node = acpi_ns_map_handle_to_node (obj_handle);
level_tmp = level;
type = this_node->type;
@@ -204,56 +205,198 @@
/*
* Now we can print out the pertinent information
*/
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " %4.4s %-9s ", &this_node->name, acpi_ut_get_type_name (type)));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "%p S:%p O:%p", this_node, this_node->child, this_node->object));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " %4.4s %-12s %p",
+ (char*)&this_node->name, acpi_ut_get_type_name (type), this_node));
+ obj_desc = this_node->object;
- if (!this_node->object) {
- /* No attached object, we are done */
+ switch (info->display_type) {
+ case ACPI_DISPLAY_SUMMARY:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
- return (AE_OK);
- }
+ if (!obj_desc) {
+ /* No attached object, we are done */
- switch (type) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ return (AE_OK);
+ }
- case ACPI_TYPE_METHOD:
- /* Name is a Method and its AML offset/length are set */
+ switch (type) {
+ case ACPI_TYPE_PROCESSOR:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " ID %d Addr %.4X Len %.4X\n",
+ obj_desc->processor.proc_id,
+ obj_desc->processor.address,
+ obj_desc->processor.length));
+ break;
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " M:%p-%X\n",
- ((acpi_operand_object *) this_node->object)->method.pcode,
- ((acpi_operand_object *) this_node->object)->method.pcode_length));
+ case ACPI_TYPE_DEVICE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Notification object: %p", obj_desc));
+ break;
- break;
+ case ACPI_TYPE_METHOD:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Args %d Len %.4X Aml %p \n",
+ obj_desc->method.param_count,
+ obj_desc->method.aml_length,
+ obj_desc->method.aml_start));
+ break;
+ case ACPI_TYPE_INTEGER:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " = %8.8X%8.8X\n",
+ HIDWORD (obj_desc->integer.value),
+ LODWORD (obj_desc->integer.value)));
+ break;
- case ACPI_TYPE_INTEGER:
+ case ACPI_TYPE_PACKAGE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Elements %.2X\n",
+ obj_desc->package.count));
+ break;
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " N:%X\n",
- ((acpi_operand_object *) this_node->object)->integer.value));
- break;
+ case ACPI_TYPE_BUFFER:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Len %.2X",
+ obj_desc->buffer.length));
+ /* Dump some of the buffer */
- case ACPI_TYPE_STRING:
+ if (obj_desc->buffer.length > 0) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " ="));
+ for (i = 0; (i < obj_desc->buffer.length && i < 12); i++) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " %.2X",
+ obj_desc->buffer.pointer[i]));
+ }
+ }
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ break;
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " S:%p-%X\n",
- ((acpi_operand_object *) this_node->object)->string.pointer,
- ((acpi_operand_object *) this_node->object)->string.length));
- break;
+ case ACPI_TYPE_STRING:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Len %.2X",
+ obj_desc->string.length));
+ if (obj_desc->string.length > 0) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " = \"%.32s\"...",
+ obj_desc->string.pointer));
+ }
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ break;
- case ACPI_TYPE_BUFFER:
+ case ACPI_TYPE_REGION:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " [%s]",
+ acpi_ut_get_region_name (obj_desc->region.space_id)));
+ if (obj_desc->region.flags & AOPOBJ_DATA_VALID) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Addr %8.8X%8.8X Len %.4X\n",
+ HIDWORD(obj_desc->region.address),
+ LODWORD(obj_desc->region.address),
+ obj_desc->region.length));
+ }
+ else {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " [Address/Length not evaluated]\n"));
+ }
+ break;
+
+ case INTERNAL_TYPE_REFERENCE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " [%s]\n",
+ acpi_ps_get_opcode_name (obj_desc->reference.opcode)));
+ break;
+
+ case ACPI_TYPE_BUFFER_FIELD:
+
+ /* TBD: print Buffer name when we can easily get it */
+ break;
+
+ case INTERNAL_TYPE_REGION_FIELD:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Rgn [%4.4s]",
+ (char *) &obj_desc->common_field.region_obj->region.node->name));
+ break;
+
+ case INTERNAL_TYPE_BANK_FIELD:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Rgn [%4.4s]",
+ (char *) &obj_desc->common_field.region_obj->region.node->name));
+ break;
+
+ case INTERNAL_TYPE_INDEX_FIELD:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Rgn [%4.4s]",
+ (char *) &obj_desc->index_field.index_obj->common_field.region_obj->region.node->name));
+ break;
+
+ default:
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Object %p\n", obj_desc));
+ break;
+ }
+
+ /* Common field handling */
+
+ switch (type) {
+ case ACPI_TYPE_BUFFER_FIELD:
+ case INTERNAL_TYPE_REGION_FIELD:
+ case INTERNAL_TYPE_BANK_FIELD:
+ case INTERNAL_TYPE_INDEX_FIELD:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Off %.2X Len %.2X Acc %.2d\n",
+ (obj_desc->common_field.base_byte_offset * 8) + obj_desc->common_field.start_field_bit_offset,
+ obj_desc->common_field.bit_length,
+ obj_desc->common_field.access_bit_width));
+ break;
+ }
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " B:%p-%X\n",
- ((acpi_operand_object *) this_node->object)->buffer.pointer,
- ((acpi_operand_object *) this_node->object)->buffer.length));
break;
- default:
+ case ACPI_DISPLAY_OBJECTS:
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "%p O:%p",
+ this_node, obj_desc));
+
+ if (!obj_desc) {
+ /* No attached object, we are done */
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ return (AE_OK);
+ }
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(R%d)",
+ obj_desc->common.reference_count));
+
+ switch (type) {
+
+ case ACPI_TYPE_METHOD:
+
+ /* Name is a Method and its AML offset/length are set */
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " M:%p-%X\n",
+ obj_desc->method.aml_start,
+ obj_desc->method.aml_length));
+
+ break;
+
+
+ case ACPI_TYPE_INTEGER:
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " N:%X%X\n",
+ HIDWORD(obj_desc->integer.value),
+ LODWORD(obj_desc->integer.value)));
+ break;
+
+
+ case ACPI_TYPE_STRING:
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " S:%p-%X\n",
+ obj_desc->string.pointer,
+ obj_desc->string.length));
+ break;
+
+
+ case ACPI_TYPE_BUFFER:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " B:%p-%X\n",
+ obj_desc->buffer.pointer,
+ obj_desc->buffer.length));
+ break;
+
+
+ default:
+
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "\n"));
+ break;
+ }
break;
}
@@ -266,30 +409,24 @@
/* If there is an attached object, display it */
- value = this_node->object;
+ obj_desc = this_node->object;
/* Dump attached objects */
- while (value) {
+ while (obj_desc) {
obj_type = INTERNAL_TYPE_INVALID;
/* Decode the type of attached object and dump the contents */
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Attached Object %p: ", value));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " Attached Object %p: ", obj_desc));
- if (acpi_tb_system_table_pointer (value)) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to AML Code)\n"));
- bytes_to_dump = 16;
- }
-
- else if (VALID_DESCRIPTOR_TYPE (value, ACPI_DESC_TYPE_NAMED)) {
+ if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to Node)\n"));
bytes_to_dump = sizeof (acpi_namespace_node);
}
- else if (VALID_DESCRIPTOR_TYPE (value, ACPI_DESC_TYPE_INTERNAL)) {
- obj_desc = (acpi_operand_object *) value;
+ else if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_INTERNAL)) {
obj_type = obj_desc->common.type;
if (obj_type > INTERNAL_TYPE_MAX) {
@@ -298,23 +435,22 @@
}
else {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to ACPI Object type %X [%s])\n",
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(Ptr to ACPI Object type %2.2X [%s])\n",
obj_type, acpi_ut_get_type_name (obj_type)));
bytes_to_dump = sizeof (acpi_operand_object);
}
}
else {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(String or Buffer - not descriptor)\n", value));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, "(String or Buffer - not descriptor)\n"));
bytes_to_dump = 16;
}
- DUMP_BUFFER (value, bytes_to_dump);
+ DUMP_BUFFER (obj_desc, bytes_to_dump);
/* If value is NOT an internal object, we are done */
- if ((acpi_tb_system_table_pointer (value)) ||
- (VALID_DESCRIPTOR_TYPE (value, ACPI_DESC_TYPE_NAMED))) {
+ if (VALID_DESCRIPTOR_TYPE (obj_desc, ACPI_DESC_TYPE_NAMED)) {
goto cleanup;
}
@@ -323,35 +459,35 @@
*/
switch (obj_type) {
case ACPI_TYPE_STRING:
- value = (u8 *) obj_desc->string.pointer;
+ obj_desc = (acpi_operand_object *) obj_desc->string.pointer;
break;
case ACPI_TYPE_BUFFER:
- value = (u8 *) obj_desc->buffer.pointer;
+ obj_desc = (acpi_operand_object *) obj_desc->buffer.pointer;
break;
case ACPI_TYPE_BUFFER_FIELD:
- value = (u8 *) obj_desc->buffer_field.buffer_obj;
+ obj_desc = (acpi_operand_object *) obj_desc->buffer_field.buffer_obj;
break;
case ACPI_TYPE_PACKAGE:
- value = (u8 *) obj_desc->package.elements;
+ obj_desc = (acpi_operand_object *) obj_desc->package.elements;
break;
case ACPI_TYPE_METHOD:
- value = (u8 *) obj_desc->method.pcode;
+ obj_desc = (acpi_operand_object *) obj_desc->method.aml_start;
break;
case INTERNAL_TYPE_REGION_FIELD:
- value = (u8 *) obj_desc->field.region_obj;
+ obj_desc = (acpi_operand_object *) obj_desc->field.region_obj;
break;
case INTERNAL_TYPE_BANK_FIELD:
- value = (u8 *) obj_desc->bank_field.region_obj;
+ obj_desc = (acpi_operand_object *) obj_desc->bank_field.region_obj;
break;
case INTERNAL_TYPE_INDEX_FIELD:
- value = (u8 *) obj_desc->index_field.index_obj;
+ obj_desc = (acpi_operand_object *) obj_desc->index_field.index_obj;
break;
default:
@@ -386,11 +522,12 @@
void
acpi_ns_dump_objects (
acpi_object_type8 type,
+ u8 display_type,
u32 max_depth,
u32 owner_id,
acpi_handle start_handle)
{
- ACPI_WALK_INFO info;
+ acpi_walk_info info;
FUNCTION_ENTRY ();
@@ -398,6 +535,8 @@
info.debug_level = ACPI_LV_TABLES;
info.owner_id = owner_id;
+ info.display_type = display_type;
+
acpi_ns_walk_namespace (type, start_handle, max_depth, NS_WALK_NO_UNLOCK, acpi_ns_dump_one_object,
(void *) &info, NULL);
@@ -441,8 +580,8 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " "));
}
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %.8X, ADR: %.8X, Status: %x\n",
- info.hardware_id, info.address, info.current_status));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %s, ADR: %8.8X%8.8X, Status: %x\n",
+ info.hardware_id, HIDWORD(info.address), LODWORD(info.address), info.current_status));
}
return (status);
@@ -524,7 +663,8 @@
}
- acpi_ns_dump_objects (ACPI_TYPE_ANY, max_depth, ACPI_UINT32_MAX, search_handle);
+ acpi_ns_dump_objects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, max_depth,
+ ACPI_UINT32_MAX, search_handle);
return_VOID;
}
@@ -545,7 +685,7 @@
acpi_handle handle,
u32 debug_level)
{
- ACPI_WALK_INFO info;
+ acpi_walk_info info;
FUNCTION_ENTRY ();
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nseval.c linux/drivers/acpi/namespace/nseval.c
--- v2.4.13/linux/drivers/acpi/namespace/nseval.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nseval.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: nseval - Object evaluation interfaces -- includes control
* method lookup and execution.
- * $Revision: 97 $
+ * $Revision: 102 $
*
******************************************************************************/
@@ -93,7 +93,7 @@
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- prefix_node = acpi_ns_convert_handle_to_entry (handle);
+ prefix_node = acpi_ns_map_handle_to_node (handle);
if (!prefix_node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
status = AE_BAD_PARAMETER;
@@ -271,7 +271,7 @@
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- node = acpi_ns_convert_handle_to_entry (handle);
+ node = acpi_ns_map_handle_to_node (handle);
if (!node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return_ACPI_STATUS (AE_BAD_PARAMETER);
@@ -378,17 +378,18 @@
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No attached method object\n"));
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
- return_ACPI_STATUS (AE_ERROR);
+ return_ACPI_STATUS (AE_NULL_OBJECT);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Control method at Offset %x Length %lx]\n",
- obj_desc->method.pcode + 1, obj_desc->method.pcode_length - 1));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Control method at Offset %p Length %x]\n",
+ obj_desc->method.aml_start + 1, obj_desc->method.aml_length - 1));
DUMP_PATHNAME (method_node, "Ns_execute_control_method: Executing",
ACPI_LV_NAMES, _COMPONENT);
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "At offset %8XH\n", obj_desc->method.pcode + 1));
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "At offset %p\n",
+ obj_desc->method.aml_start + 1));
/*
@@ -437,7 +438,7 @@
{
acpi_status status = AE_OK;
acpi_operand_object *obj_desc;
- acpi_operand_object *val_desc;
+ acpi_operand_object *source_desc;
FUNCTION_TRACE ("Ns_get_object_value");
@@ -460,8 +461,8 @@
/*
* Get the attached object
*/
- val_desc = acpi_ns_get_attached_object (node);
- if (!val_desc) {
+ source_desc = acpi_ns_get_attached_object (node);
+ if (!source_desc) {
status = AE_NULL_OBJECT;
goto unlock_and_exit;
}
@@ -472,7 +473,7 @@
* TBD: [Future] - need a low-level object copy that handles
* the reference count automatically. (Don't want to copy it)
*/
- MEMCPY (obj_desc, val_desc, sizeof (acpi_operand_object));
+ MEMCPY (obj_desc, source_desc, sizeof (acpi_operand_object));
obj_desc->common.reference_count = 1;
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsinit.c linux/drivers/acpi/namespace/nsinit.c
--- v2.4.13/linux/drivers/acpi/namespace/nsinit.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsinit.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsinit - namespace initialization
- * $Revision: 31 $
+ * $Revision: 33 $
*
*****************************************************************************/
@@ -51,7 +51,7 @@
void)
{
acpi_status status;
- ACPI_INIT_WALK_INFO info;
+ acpi_init_walk_info info;
FUNCTION_TRACE ("Ns_initialize_objects");
@@ -112,7 +112,7 @@
void)
{
acpi_status status;
- ACPI_DEVICE_WALK_INFO info;
+ acpi_device_walk_info info;
FUNCTION_TRACE ("Ns_initialize_devices");
@@ -170,7 +170,7 @@
{
acpi_object_type8 type;
acpi_status status;
- ACPI_INIT_WALK_INFO *info = (ACPI_INIT_WALK_INFO *) context;
+ acpi_init_walk_info *info = (acpi_init_walk_info *) context;
acpi_namespace_node *node = (acpi_namespace_node *) obj_handle;
acpi_operand_object *obj_desc;
@@ -218,7 +218,7 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "\n"));
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"%s while getting region arguments [%4.4s]\n",
- acpi_format_exception (status), &node->name));
+ acpi_format_exception (status), (char*)&node->name));
}
if (!(acpi_dbg_level & ACPI_LV_INIT)) {
@@ -241,7 +241,7 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ERROR, "\n"));
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"%s while getting buffer field arguments [%4.4s]\n",
- acpi_format_exception (status), &node->name));
+ acpi_format_exception (status), (char*)&node->name));
}
if (!(acpi_dbg_level & ACPI_LV_INIT)) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "."));
@@ -268,7 +268,7 @@
*
* FUNCTION: Acpi_ns_init_one_device
*
- * PARAMETERS: ACPI_WALK_CALLBACK
+ * PARAMETERS: acpi_walk_callback
*
* RETURN: acpi_status
*
@@ -288,7 +288,7 @@
acpi_status status;
acpi_namespace_node *node;
u32 flags;
- ACPI_DEVICE_WALK_INFO *info = (ACPI_DEVICE_WALK_INFO *) context;
+ acpi_device_walk_info *info = (acpi_device_walk_info *) context;
FUNCTION_TRACE ("Ns_init_one_device");
@@ -302,7 +302,7 @@
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- node = acpi_ns_convert_handle_to_entry (obj_handle);
+ node = acpi_ns_map_handle_to_node (obj_handle);
if (!node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsload.c linux/drivers/acpi/namespace/nsload.c
--- v2.4.13/linux/drivers/acpi/namespace/nsload.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsload.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsload - namespace loading/expanding/contracting procedures
- * $Revision: 43 $
+ * $Revision: 47 $
*
*****************************************************************************/
@@ -109,35 +109,14 @@
u32 pass_number,
acpi_table_desc *table_desc)
{
- acpi_parse_downwards descending_callback;
- acpi_parse_upwards ascending_callback;
acpi_parse_object *parse_root;
acpi_status status;
+ acpi_walk_state *walk_state;
FUNCTION_TRACE ("Ns_one_complete_parse");
- switch (pass_number) {
- case 1:
- descending_callback = acpi_ds_load1_begin_op;
- ascending_callback = acpi_ds_load1_end_op;
- break;
-
- case 2:
- descending_callback = acpi_ds_load2_begin_op;
- ascending_callback = acpi_ds_load2_end_op;
- break;
-
- case 3:
- descending_callback = acpi_ds_exec_begin_op;
- ascending_callback = acpi_ds_exec_end_op;
- break;
-
- default:
- return (AE_BAD_PARAMETER);
- }
-
/* Create and init a Root Node */
parse_root = acpi_ps_alloc_op (AML_SCOPE_OP);
@@ -148,15 +127,26 @@
((acpi_parse2_object *) parse_root)->name = ACPI_ROOT_NAME;
- /* Pass 1: Parse everything except control method bodies */
+ /* Create and initialize a new walk state */
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %d parse\n", pass_number));
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ acpi_ps_free_op (parse_root);
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
- status = acpi_ps_parse_aml (parse_root, table_desc->aml_pointer,
- table_desc->aml_length,
- ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
- NULL, NULL, NULL, descending_callback,
- ascending_callback);
+ status = acpi_ds_init_aml_walk (walk_state, parse_root, NULL, table_desc->aml_start,
+ table_desc->aml_length, NULL, NULL, pass_number);
+ if (ACPI_FAILURE (status)) {
+ acpi_ds_delete_walk_state (walk_state);
+ return_ACPI_STATUS (status);
+ }
+
+ /* Parse the AML */
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %d parse\n", pass_number));
+ status = acpi_ps_parse_aml (walk_state);
acpi_ps_delete_parse_tree (parse_root);
return_ACPI_STATUS (status);
@@ -225,8 +215,8 @@
*
* FUNCTION: Acpi_ns_load_table
*
- * PARAMETERS: *Pcode_addr - Address of pcode block
- * Pcode_length - Length of pcode block
+ * PARAMETERS: Table_desc - Descriptor for table to be loaded
+ * Node - Owning NS node
*
* RETURN: Status
*
@@ -245,12 +235,12 @@
FUNCTION_TRACE ("Ns_load_table");
- if (!table_desc->aml_pointer) {
+ if (!table_desc->aml_start) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null AML pointer\n"));
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", table_desc->aml_pointer));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AML block at %p\n", table_desc->aml_start));
if (!table_desc->aml_length) {
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsnames.c linux/drivers/acpi/namespace/nsnames.c
--- v2.4.13/linux/drivers/acpi/namespace/nsnames.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsnames.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsnames - Name manipulation and search
- * $Revision: 63 $
+ * $Revision: 64 $
*
******************************************************************************/
@@ -203,7 +203,7 @@
return_ACPI_STATUS (AE_NO_NAMESPACE);
}
- node = acpi_ns_convert_handle_to_entry (target_handle);
+ node = acpi_ns_map_handle_to_node (target_handle);
if (!node) {
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsobject.c linux/drivers/acpi/namespace/nsobject.c
--- v2.4.13/linux/drivers/acpi/namespace/nsobject.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsobject.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: nsobject - Utilities for objects attached to namespace
* table entries
- * $Revision: 65 $
+ * $Revision: 67 $
*
******************************************************************************/
@@ -63,7 +63,6 @@
acpi_operand_object *previous_obj_desc;
acpi_object_type8 obj_type = ACPI_TYPE_ANY;
u8 flags;
- u16 opcode;
FUNCTION_TRACE ("Ns_attach_object");
@@ -158,87 +157,6 @@
obj_type = type;
}
- /*
- * Type is TYPE_Any, we must try to determinte the
- * actual type of the object.
- * Check if value points into the AML code
- */
- else if (acpi_tb_system_table_pointer (object)) {
- /*
- * Object points into the AML stream.
- * Set a flag bit in the Node to indicate this
- */
- flags |= ANOBJ_AML_ATTACHMENT;
-
- /*
- * The next byte (perhaps the next two bytes)
- * will be the AML opcode
- */
- MOVE_UNALIGNED16_TO_16 (&opcode, object);
-
- /* Check for a recognized Opcode */
-
- switch ((u8) opcode) {
-
- case AML_OP_PREFIX:
-
- if (opcode != AML_REVISION_OP) {
- /*
- * Op_prefix is unrecognized unless part
- * of Revision_op
- */
- break;
- }
-
- /* case AML_REVISION_OP: fall through and set the type to Integer */
-
- case AML_ZERO_OP:
- case AML_ONES_OP:
- case AML_ONE_OP:
- case AML_BYTE_OP:
- case AML_WORD_OP:
- case AML_DWORD_OP:
- case AML_QWORD_OP:
-
- obj_type = ACPI_TYPE_INTEGER;
- break;
-
-
- case AML_STRING_OP:
-
- obj_type = ACPI_TYPE_STRING;
- break;
-
-
- case AML_BUFFER_OP:
-
- obj_type = ACPI_TYPE_BUFFER;
- break;
-
-
- case AML_MUTEX_OP:
-
- obj_type = ACPI_TYPE_MUTEX;
- break;
-
-
- case AML_PACKAGE_OP:
-
- obj_type = ACPI_TYPE_PACKAGE;
- break;
-
-
- default:
-
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "AML Opcode/Type [%x] not supported in attach\n",
- (u8) opcode));
-
- return_ACPI_STATUS (AE_TYPE);
- break;
- }
- }
-
else {
/*
* Cannot figure out the type -- set to Def_any which
@@ -249,12 +167,7 @@
"Ns_attach_object confused: setting bogus type for ",
ACPI_LV_INFO, _COMPONENT);
- if (acpi_tb_system_table_pointer (object)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "AML-stream code %02x\n", *(u8 *) object));
- }
-
- else if (VALID_DESCRIPTOR_TYPE (object, ACPI_DESC_TYPE_NAMED)) {
+ if (VALID_DESCRIPTOR_TYPE (object, ACPI_DESC_TYPE_NAMED)) {
DUMP_PATHNAME (object, "name ", ACPI_LV_INFO, _COMPONENT);
}
@@ -270,7 +183,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n",
- obj_desc, node, &node->name));
+ obj_desc, node, (char*)&node->name));
/*
@@ -340,21 +253,12 @@
node->object = NULL;
- /* Found a valid value */
-
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Object=%p Value=%p Name %4.4s\n",
- node, obj_desc, &node->name));
+ node, obj_desc, (char*)&node->name));
- /*
- * Not every value is an object allocated via ACPI_MEM_CALLOCATE,
- * - must check
- */
- if (!acpi_tb_system_table_pointer (obj_desc)) {
- /* Attempt to delete the object (and all subobjects) */
-
- acpi_ut_remove_reference (obj_desc);
- }
+ /* Remove one reference on the object (and all subobjects) */
+ acpi_ut_remove_reference (obj_desc);
return_VOID;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nssearch.c linux/drivers/acpi/namespace/nssearch.c
--- v2.4.13/linux/drivers/acpi/namespace/nssearch.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nssearch.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nssearch - Namespace search
- * $Revision: 74 $
+ * $Revision: 75 $
*
******************************************************************************/
@@ -80,7 +80,7 @@
scope_name = acpi_ns_get_table_pathname (node);
if (scope_name) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s [%p] For %4.4s (type %X)\n",
- scope_name, node, &target_name, type));
+ scope_name, node, (char*)&target_name, type));
ACPI_MEM_FREE (scope_name);
}
@@ -124,7 +124,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
"Name %4.4s (actual type %X) found at %p\n",
- &target_name, next_node->type, next_node));
+ (char*)&target_name, next_node->type, next_node));
*return_node = next_node;
return_ACPI_STATUS (AE_OK);
@@ -150,7 +150,7 @@
/* Searched entire table, not found */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name %4.4s (type %X) not found at %p\n",
- &target_name, type, next_node));
+ (char*)&target_name, type, next_node));
return_ACPI_STATUS (AE_NOT_FOUND);
}
@@ -205,12 +205,12 @@
(!parent_node)) {
if (!parent_node) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n",
- &target_name));
+ (char*)&target_name));
}
if (acpi_ns_local (type)) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] type %X is local(no search)\n",
- &target_name, type));
+ (char*)&target_name, type));
}
return_ACPI_STATUS (AE_NOT_FOUND);
@@ -219,7 +219,7 @@
/* Search the parent tree */
- ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching parent for %4.4s\n", &target_name));
+ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching parent for %4.4s\n", (char*)&target_name));
/*
* Search parents until found the target or we have backed up to
@@ -295,7 +295,7 @@
/* Parameter validation */
if (!node || !target_name || !return_node) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null param- Table %p Name %p Return %p\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null param- Table %p Name %X Return %p\n",
node, target_name, return_node));
REPORT_ERROR (("Ns_search_and_enter: bad (null) parameter\n"));
@@ -306,7 +306,7 @@
/* Name must consist of printable characters */
if (!acpi_ut_valid_acpi_name (target_name)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "*** Bad character in name: %08lx *** \n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "*** Bad character in name: %08x *** \n",
target_name));
REPORT_ERROR (("Ns_search_and_enter: Bad character in ACPI Name\n"));
@@ -364,7 +364,7 @@
*/
if (interpreter_mode == IMODE_EXECUTE) {
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s Not found in %p [Not adding]\n",
- &target_name, node));
+ (char*)&target_name, node));
return_ACPI_STATUS (AE_NOT_FOUND);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsutils.c linux/drivers/acpi/namespace/nsutils.c
--- v2.4.13/linux/drivers/acpi/namespace/nsutils.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsutils.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
* parents and siblings and Scope manipulation
- * $Revision: 89 $
+ * $Revision: 92 $
*
*****************************************************************************/
@@ -148,7 +148,7 @@
acpi_status
acpi_ns_get_internal_name_length (
- ACPI_NAMESTRING_INFO *info)
+ acpi_namestring_info *info)
{
NATIVE_CHAR *next_external_char;
u32 i;
@@ -225,7 +225,7 @@
acpi_status
acpi_ns_build_internal_name (
- ACPI_NAMESTRING_INFO *info)
+ acpi_namestring_info *info)
{
u32 num_segments = info->num_segments;
NATIVE_CHAR *internal_name = info->internal_name;
@@ -356,7 +356,7 @@
NATIVE_CHAR **converted_name)
{
NATIVE_CHAR *internal_name;
- ACPI_NAMESTRING_INFO info;
+ acpi_namestring_info info;
acpi_status status;
@@ -549,7 +549,7 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ns_convert_handle_to_entry
+ * FUNCTION: Acpi_ns_map_handle_to_node
*
* PARAMETERS: Handle - Handle to be converted to an Node
*
@@ -560,7 +560,7 @@
******************************************************************************/
acpi_namespace_node *
-acpi_ns_convert_handle_to_entry (
+acpi_ns_map_handle_to_node (
acpi_handle handle)
{
@@ -829,7 +829,7 @@
parent_node = acpi_ns_get_parent_object (child_node);
if (parent_node) {
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Parent of %p [%4.4s] is %p [%4.4s]\n",
- child_node, &child_node->name, parent_node, &parent_node->name));
+ child_node, (char*)&child_node->name, parent_node, (char*)&parent_node->name));
if (parent_node->name) {
return_VALUE (parent_node->name);
@@ -837,7 +837,7 @@
}
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "unable to find parent of %p (%4.4s)\n",
- child_node, &child_node->name));
+ child_node, (char*)&child_node->name));
}
return_VALUE (ACPI_UNKNOWN_NAME);
@@ -925,21 +925,21 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ns_get_next_valid_object
+ * FUNCTION: Acpi_ns_get_next_valid_node
*
* PARAMETERS: Node - Current table entry
*
- * RETURN: Next valid object in the table. NULL if no more valid
- * objects
+ * RETURN: Next valid Node in the linked node list. NULL if no more valid
+ * nodess
*
- * DESCRIPTION: Find the next valid object within a name table.
+ * DESCRIPTION: Find the next valid node within a name table.
* Useful for implementing NULL-end-of-list loops.
*
******************************************************************************/
acpi_namespace_node *
-acpi_ns_get_next_valid_object (
+acpi_ns_get_next_valid_node (
acpi_namespace_node *node)
{
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nswalk.c linux/drivers/acpi/namespace/nswalk.c
--- v2.4.13/linux/drivers/acpi/namespace/nswalk.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nswalk.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nswalk - Functions for walking the ACPI namespace
- * $Revision: 24 $
+ * $Revision: 26 $
*
*****************************************************************************/
@@ -33,27 +33,27 @@
MODULE_NAME ("nswalk")
-/****************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_get_next_object
+ * FUNCTION: Acpi_ns_get_next_node
*
- * PARAMETERS: Type - Type of object to be searched for
- * Parent - Parent object whose children we are
- * getting
- * Last_child - Previous child that was found.
+ * PARAMETERS: Type - Type of node to be searched for
+ * Parent_node - Parent node whose children we are
+ * getting
+ * Child_node - Previous child that was found.
* The NEXT child will be returned
*
* RETURN: acpi_namespace_node - Pointer to the NEXT child or NULL if
- * none is found.
+ * none is found.
*
- * DESCRIPTION: Return the next peer object within the namespace. If Handle
- * is valid, Scope is ignored. Otherwise, the first object
+ * DESCRIPTION: Return the next peer node within the namespace. If Handle
+ * is valid, Scope is ignored. Otherwise, the first node
* within Scope is returned.
*
- ****************************************************************************/
+ ******************************************************************************/
acpi_namespace_node *
-acpi_ns_get_next_object (
+acpi_ns_get_next_node (
acpi_object_type8 type,
acpi_namespace_node *parent_node,
acpi_namespace_node *child_node)
@@ -73,12 +73,11 @@
}
else {
- /* Start search at the NEXT object */
+ /* Start search at the NEXT node */
- next_node = acpi_ns_get_next_valid_object (child_node);
+ next_node = acpi_ns_get_next_valid_node (child_node);
}
-
/* If any type is OK, we are done */
if (type == ACPI_TYPE_ANY) {
@@ -87,8 +86,7 @@
return (next_node);
}
-
- /* Must search for the object -- but within this scope only */
+ /* Must search for the node -- but within this scope only */
while (next_node) {
/* If type matches, we are done */
@@ -97,19 +95,18 @@
return (next_node);
}
- /* Otherwise, move on to the next object */
+ /* Otherwise, move on to the next node */
- next_node = acpi_ns_get_next_valid_object (next_node);
+ next_node = acpi_ns_get_next_valid_node (next_node);
}
-
/* Not found */
return (NULL);
}
-/******************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_ns_walk_namespace
*
@@ -120,13 +117,13 @@
* the callback routine
* User_function - Called when an object of "Type" is found
* Context - Passed to user function
- *
- * RETURNS Return value from the User_function if terminated early.
- * Otherwise, returns NULL.
+ * Return_value - from the User_function if terminated early.
+ * Otherwise, returns NULL.
+ * RETURNS: Status
*
* DESCRIPTION: Performs a modified depth-first walk of the namespace tree,
- * starting (and ending) at the object specified by Start_handle.
- * The User_function is called whenever an object that matches
+ * starting (and ending) at the node specified by Start_handle.
+ * The User_function is called whenever a node that matches
* the type parameter is found. If the user function returns
* a non-zero value, the search is terminated immediately and this
* value is returned to the caller.
@@ -145,7 +142,7 @@
acpi_handle start_node,
u32 max_depth,
u8 unlock_before_callback,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void **return_value)
{
@@ -165,32 +162,26 @@
start_node = acpi_gbl_root_node;
}
-
- /* Null child means "get first object" */
+ /* Null child means "get first node" */
parent_node = start_node;
- child_node = 0;
+ child_node = 0;
child_type = ACPI_TYPE_ANY;
level = 1;
/*
- * Traverse the tree of objects until we bubble back up to where we
+ * Traverse the tree of nodes until we bubble back up to where we
* started. When Level is zero, the loop is done because we have
* bubbled up to (and passed) the original parent handle (Start_entry)
*/
while (level > 0) {
- /*
- * Get the next typed object in this scope. Null returned
- * if not found
- */
- status = AE_OK;
- child_node = acpi_ns_get_next_object (ACPI_TYPE_ANY,
- parent_node,
- child_node);
+ /* Get the next node in this scope. Null if not found */
+ status = AE_OK;
+ child_node = acpi_ns_get_next_node (ACPI_TYPE_ANY, parent_node, child_node);
if (child_node) {
/*
- * Found an object, Get the type if we are not
+ * Found node, Get the type if we are not
* searching for ANY
*/
if (type != ACPI_TYPE_ANY) {
@@ -199,7 +190,7 @@
if (child_type == type) {
/*
- * Found a matching object, invoke the user
+ * Found a matching node, invoke the user
* callback function
*/
if (unlock_before_callback) {
@@ -245,11 +236,10 @@
* maximum depth has been reached.
*/
if ((level < max_depth) && (status != AE_CTRL_DEPTH)) {
- if (acpi_ns_get_next_object (ACPI_TYPE_ANY,
- child_node, 0)) {
+ if (acpi_ns_get_next_node (ACPI_TYPE_ANY, child_node, 0)) {
/*
* There is at least one child of this
- * object, visit the object
+ * node, visit the onde
*/
level++;
parent_node = child_node;
@@ -260,9 +250,9 @@
else {
/*
- * No more children in this object (Acpi_ns_get_next_object
+ * No more children of this node (Acpi_ns_get_next_node
* failed), go back upwards in the namespace tree to
- * the object's parent.
+ * the node's parent.
*/
level--;
child_node = parent_node;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsxfname.c linux/drivers/acpi/namespace/nsxfname.c
--- v2.4.13/linux/drivers/acpi/namespace/nsxfname.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsxfname.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: nsxfname - Public interfaces to the ACPI subsystem
* ACPI Namespace oriented interfaces
- * $Revision: 80 $
+ * $Revision: 82 $
*
*****************************************************************************/
@@ -70,13 +70,6 @@
FUNCTION_ENTRY ();
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
/* Parameter Validation */
if (!ret_handle || !pathname) {
@@ -88,7 +81,7 @@
if (parent) {
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- prefix_node = acpi_ns_convert_handle_to_entry (parent);
+ prefix_node = acpi_ns_map_handle_to_node (parent);
if (!prefix_node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
@@ -144,13 +137,6 @@
acpi_namespace_node *node;
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
/* Buffer pointer must be valid always */
if (!ret_path_ptr || (name_type > ACPI_NAME_TYPE_MAX)) {
@@ -177,7 +163,7 @@
* Validate handle and convert to an Node
*/
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- node = acpi_ns_convert_handle_to_entry (handle);
+ node = acpi_ns_map_handle_to_node (handle);
if (!node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -226,21 +212,14 @@
acpi_handle handle,
acpi_device_info *info)
{
- ACPI_DEVICE_ID hid;
- ACPI_DEVICE_ID uid;
+ acpi_device_id hid;
+ acpi_device_id uid;
acpi_status status;
u32 device_status = 0;
acpi_integer address = 0;
acpi_namespace_node *node;
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
/* Parameter validation */
if (!handle || !info) {
@@ -249,7 +228,7 @@
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- node = acpi_ns_convert_handle_to_entry (handle);
+ node = acpi_ns_map_handle_to_node (handle);
if (!node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/namespace/nsxfobj.c linux/drivers/acpi/namespace/nsxfobj.c
--- v2.4.13/linux/drivers/acpi/namespace/nsxfobj.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/namespace/nsxfobj.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem
* ACPI Object oriented interfaces
- * $Revision: 90 $
+ * $Revision: 95 $
*
******************************************************************************/
@@ -41,12 +41,10 @@
*
* PARAMETERS: Handle - Object handle (optional)
* *Pathname - Object pathname (optional)
- * **Params - List of parameters to pass to
- * method, terminated by NULL.
- * Params itself may be NULL
- * if no parameters are being
- * passed.
- * *Return_object - Where to put method's return value (if
+ * **External_params - List of parameters to pass to method,
+ * terminated by NULL. May be NULL
+ * if no parameters are being passed.
+ * *Return_buffer - Where to put method's return value (if
* any). If NULL, no value is returned.
*
* RETURN: Status
@@ -61,12 +59,12 @@
acpi_evaluate_object (
acpi_handle handle,
acpi_string pathname,
- acpi_object_list *param_objects,
+ acpi_object_list *external_params,
acpi_buffer *return_buffer)
{
acpi_status status;
- acpi_operand_object **param_ptr = NULL;
- acpi_operand_object *return_obj = NULL;
+ acpi_operand_object **internal_params = NULL;
+ acpi_operand_object *internal_return_obj = NULL;
u32 buffer_space_needed;
u32 user_buffer_length;
u32 i;
@@ -75,25 +73,18 @@
FUNCTION_TRACE ("Acpi_evaluate_object");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/*
* If there are parameters to be passed to the object
* (which must be a control method), the external objects
* must be converted to internal objects
*/
- if (param_objects && param_objects->count) {
+ if (external_params && external_params->count) {
/*
* Allocate a new parameter block for the internal objects
* Add 1 to count to allow for null terminated internal list
*/
- param_ptr = ACPI_MEM_CALLOCATE ((param_objects->count + 1) * sizeof (void *));
- if (!param_ptr) {
+ internal_params = ACPI_MEM_CALLOCATE ((external_params->count + 1) * sizeof (void *));
+ if (!internal_params) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
@@ -102,16 +93,16 @@
* Convert each external object in the list to an
* internal object
*/
- for (i = 0; i < param_objects->count; i++) {
- status = acpi_ut_copy_eobject_to_iobject (¶m_objects->pointer[i],
- ¶m_ptr[i]);
+ for (i = 0; i < external_params->count; i++) {
+ status = acpi_ut_copy_eobject_to_iobject (&external_params->pointer[i],
+ &internal_params[i]);
if (ACPI_FAILURE (status)) {
- acpi_ut_delete_internal_object_list (param_ptr);
+ acpi_ut_delete_internal_object_list (internal_params);
return_ACPI_STATUS (status);
}
}
- param_ptr[param_objects->count] = NULL;
+ internal_params[external_params->count] = NULL;
}
@@ -126,7 +117,7 @@
/*
* The path is fully qualified, just evaluate by name
*/
- status = acpi_ns_evaluate_by_name (pathname, param_ptr, &return_obj);
+ status = acpi_ns_evaluate_by_name (pathname, internal_params, &internal_return_obj);
}
else if (!handle) {
@@ -157,15 +148,15 @@
* The null pathname case means the handle is for
* the actual object to be evaluated
*/
- status = acpi_ns_evaluate_by_handle (handle, param_ptr, &return_obj);
+ status = acpi_ns_evaluate_by_handle (handle, internal_params, &internal_return_obj);
}
else {
/*
* Both a Handle and a relative Pathname
*/
- status = acpi_ns_evaluate_relative (handle, pathname, param_ptr,
- &return_obj);
+ status = acpi_ns_evaluate_relative (handle, pathname, internal_params,
+ &internal_return_obj);
}
}
@@ -179,8 +170,8 @@
user_buffer_length = return_buffer->length;
return_buffer->length = 0;
- if (return_obj) {
- if (VALID_DESCRIPTOR_TYPE (return_obj, ACPI_DESC_TYPE_NAMED)) {
+ if (internal_return_obj) {
+ if (VALID_DESCRIPTOR_TYPE (internal_return_obj, ACPI_DESC_TYPE_NAMED)) {
/*
* If we got an Node as a return object,
* this means the object we are evaluating
@@ -193,7 +184,7 @@
* types at a later date if necessary.
*/
status = AE_TYPE;
- return_obj = NULL; /* No need to delete an Node */
+ internal_return_obj = NULL; /* No need to delete an Node */
}
if (ACPI_SUCCESS (status)) {
@@ -201,7 +192,7 @@
* Find out how large a buffer is needed
* to contain the returned object
*/
- status = acpi_ut_get_object_size (return_obj,
+ status = acpi_ut_get_object_size (internal_return_obj,
&buffer_space_needed);
if (ACPI_SUCCESS (status)) {
/*
@@ -226,7 +217,7 @@
/*
* We have enough space for the object, build it
*/
- status = acpi_ut_copy_iobject_to_eobject (return_obj,
+ status = acpi_ut_copy_iobject_to_eobject (internal_return_obj,
return_buffer);
return_buffer->length = buffer_space_needed;
}
@@ -238,21 +229,21 @@
/* Delete the return and parameter objects */
- if (return_obj) {
+ if (internal_return_obj) {
/*
* Delete the internal return object. (Or at least
* decrement the reference count by one)
*/
- acpi_ut_remove_reference (return_obj);
+ acpi_ut_remove_reference (internal_return_obj);
}
/*
* Free the input parameter list (if we created one),
*/
- if (param_ptr) {
+ if (internal_params) {
/* Free the allocated parameter block */
- acpi_ut_delete_internal_object_list (param_ptr);
+ acpi_ut_delete_internal_object_list (internal_params);
}
return_ACPI_STATUS (status);
@@ -290,13 +281,6 @@
acpi_namespace_node *child_node = NULL;
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
/* Parameter validation */
if (type > ACPI_TYPE_MAX) {
@@ -310,7 +294,7 @@
if (!child) {
/* Start search at the beginning of the specified scope */
- parent_node = acpi_ns_convert_handle_to_entry (parent);
+ parent_node = acpi_ns_map_handle_to_node (parent);
if (!parent_node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -322,7 +306,7 @@
else {
/* Convert and validate the handle */
- child_node = acpi_ns_convert_handle_to_entry (child);
+ child_node = acpi_ns_map_handle_to_node (child);
if (!child_node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -332,7 +316,7 @@
/* Internal function does the real work */
- node = acpi_ns_get_next_object ((acpi_object_type8) type,
+ node = acpi_ns_get_next_node ((acpi_object_type8) type,
parent_node, child_node);
if (!node) {
status = AE_NOT_FOUND;
@@ -370,15 +354,7 @@
acpi_object_type *ret_type)
{
acpi_namespace_node *node;
- acpi_status status;
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
/* Parameter Validation */
@@ -399,7 +375,7 @@
/* Convert and validate the handle */
- node = acpi_ns_convert_handle_to_entry (handle);
+ node = acpi_ns_map_handle_to_node (handle);
if (!node) {
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
@@ -436,13 +412,6 @@
acpi_status status = AE_OK;
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
if (!ret_handle) {
return (AE_BAD_PARAMETER);
}
@@ -458,7 +427,7 @@
/* Convert and validate the handle */
- node = acpi_ns_convert_handle_to_entry (handle);
+ node = acpi_ns_map_handle_to_node (handle);
if (!node) {
status = AE_BAD_PARAMETER;
goto unlock_and_exit;
@@ -519,7 +488,7 @@
acpi_object_type type,
acpi_handle start_object,
u32 max_depth,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void **return_value)
{
@@ -529,13 +498,6 @@
FUNCTION_TRACE ("Acpi_walk_namespace");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if ((type > ACPI_TYPE_MAX) ||
@@ -551,11 +513,9 @@
* must be allowed to make Acpi calls itself.
*/
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- status = acpi_ns_walk_namespace ((acpi_object_type8) type,
- start_object, max_depth,
- NS_WALK_UNLOCK,
- user_function, context,
- return_value);
+ status = acpi_ns_walk_namespace ((acpi_object_type8) type, start_object,
+ max_depth, NS_WALK_UNLOCK, user_function, context,
+ return_value);
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
@@ -587,14 +547,14 @@
acpi_status status;
acpi_namespace_node *node;
u32 flags;
- ACPI_DEVICE_ID device_id;
- ACPI_GET_DEVICES_INFO *info;
+ acpi_device_id device_id;
+ acpi_get_devices_info *info;
info = context;
acpi_ut_acquire_mutex (ACPI_MTX_NAMESPACE);
- node = acpi_ns_convert_handle_to_entry (obj_handle);
+ node = acpi_ns_map_handle_to_node (obj_handle);
acpi_ut_release_mutex (ACPI_MTX_NAMESPACE);
if (!node) {
@@ -665,23 +625,16 @@
acpi_status
acpi_get_devices (
NATIVE_CHAR *HID,
- ACPI_WALK_CALLBACK user_function,
+ acpi_walk_callback user_function,
void *context,
void **return_value)
{
acpi_status status;
- ACPI_GET_DEVICES_INFO info;
+ acpi_get_devices_info info;
FUNCTION_TRACE ("Acpi_get_devices");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
/* Parameter validation */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/os.c linux/drivers/acpi/os.c
--- v2.4.13/linux/drivers/acpi/os.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/os.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: os.c - Linux OSL functions
- * $Revision: 46 $
+ * $Revision: 49 $
*
*****************************************************************************/
@@ -40,7 +40,6 @@
#include
#include
#include
-#include "driver.h"
#ifdef CONFIG_ACPI_EFI
#include
@@ -191,14 +190,7 @@
}
if ((unsigned long) phys < virt_to_phys(high_memory)) {
- struct page *page;
*virt = phys_to_virt((unsigned long) phys);
-
- /* Check for stamping */
- page = virt_to_page(*virt);
- if(page && !test_bit(PG_reserved, &page->flags))
- printk(KERN_WARNING "ACPI attempting to access kernel owned memory at %08lX.\n", (unsigned long)phys);
-
return AE_OK;
}
@@ -322,7 +314,7 @@
acpi_status
acpi_os_write_port(
ACPI_IO_ADDRESS port,
- u32 value,
+ NATIVE_UINT value,
u32 width)
{
switch (width)
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/ac_adapter/ac.c linux/drivers/acpi/ospm/ac_adapter/ac.c
--- v2.4.13/linux/drivers/acpi/ospm/ac_adapter/ac.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/ac_adapter/ac.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: ac.c
- * $Revision: 22 $
+ * $Revision: 23 $
*
*****************************************************************************/
@@ -76,7 +76,7 @@
* Print out basic adapter information.
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| AC Adapter[%02x]:[%p] %s\n", ac_adapter->device_handle, ac_adapter->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| AC Adapter[%02x]:[%p] %s\n", ac_adapter->device_handle, ac_adapter->acpi_handle, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
acpi_os_free(buffer.pointer);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/ac_adapter/ac_osl.c linux/drivers/acpi/ospm/ac_adapter/ac_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/ac_adapter/ac_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/ac_adapter/ac_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: ac_osl.c
- * $Revision: 9 $
+ * $Revision: 10 $
*
*****************************************************************************/
@@ -35,7 +35,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - AC Adapter Driver");
-MODULE_LICENSE("GPL");
#define AC_PROC_ROOT "ac_adapter"
@@ -122,7 +121,7 @@
return(AE_BAD_PARAMETER);
}
- printk(KERN_INFO "AC Adapter: found\n");
+ printk(KERN_INFO "ACPI: AC Adapter found\n");
proc_entry = proc_mkdir(ac_adapter->uid, ac_proc_root);
if (!proc_entry) {
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/battery/bt.c linux/drivers/acpi/ospm/battery/bt.c
--- v2.4.13/linux/drivers/acpi/ospm/battery/bt.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/battery/bt.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: bt.c
- * $Revision: 27 $
+ * $Revision: 29 $
*
*****************************************************************************/
@@ -76,7 +76,7 @@
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Battery[%02x]:[%p] %s\n", battery->device_handle, battery->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Battery[%02x]:[%p] %s\n", battery->device_handle, battery->acpi_handle, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| uid[%s] is_present[%d] power_units[%s]\n", battery->uid, battery->is_present, battery->power_units));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
@@ -116,7 +116,7 @@
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- MEMSET(&bif_buffer, 0, sizeof(acpi_buffer));
+ memset(&bif_buffer, 0, sizeof(acpi_buffer));
/*
* Evalute _BIF:
@@ -147,7 +147,7 @@
package_format.length = sizeof("NNNNNNNNNSSSS");
package_format.pointer = "NNNNNNNNNSSSS";
- MEMSET(&package_data, 0, sizeof(acpi_buffer));
+ memset(&package_data, 0, sizeof(acpi_buffer));
status = bm_extract_package_data(package, &package_format,
&package_data);
@@ -206,7 +206,7 @@
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- MEMSET(&bst_buffer, 0, sizeof(acpi_buffer));
+ memset(&bst_buffer, 0, sizeof(acpi_buffer));
/*
* Evalute _BST:
@@ -237,7 +237,7 @@
package_format.length = sizeof("NNNN");
package_format.pointer = "NNNN";
- MEMSET(&package_data, 0, sizeof(acpi_buffer));
+ memset(&package_data, 0, sizeof(acpi_buffer));
status = bm_extract_package_data(package, &package_format,
&package_data);
@@ -495,8 +495,8 @@
FUNCTION_TRACE("bt_initialize");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Register driver for driver method battery devices.
@@ -533,8 +533,8 @@
FUNCTION_TRACE("bt_terminate");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Unregister driver for driver method battery devices.
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/battery/bt_osl.c linux/drivers/acpi/ospm/battery/bt_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/battery/bt_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/battery/bt_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: bt_osl.c
- * $Revision: 22 $
+ * $Revision: 24 $
*
*****************************************************************************/
@@ -44,7 +44,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - Control Method Battery Driver");
-MODULE_LICENSE("GPL");
#define BT_PROC_ROOT "battery"
@@ -107,7 +106,7 @@
}
else {
p += sprintf(p, "Design Capacity: %d %sh\n",
- battery_info->design_capacity,
+ (u32)battery_info->design_capacity,
battery->power_units);
}
@@ -116,7 +115,7 @@
}
else {
p += sprintf(p, "Last Full Capacity: %d %sh\n",
- battery_info->last_full_capacity,
+ (u32)battery_info->last_full_capacity,
battery->power_units);
}
@@ -135,20 +134,20 @@
}
else {
p += sprintf(p, "Design Voltage: %d mV\n",
- battery_info->design_voltage);
+ (u32)battery_info->design_voltage);
}
p += sprintf(p, "Design Capacity Warning: %d %sh\n",
- battery_info->design_capacity_warning,
+ (u32)battery_info->design_capacity_warning,
battery->power_units);
p += sprintf(p, "Design Capacity Low: %d %sh\n",
- battery_info->design_capacity_low,
+ (u32)battery_info->design_capacity_low,
battery->power_units);
p += sprintf(p, "Capacity Granularity 1: %d %sh\n",
- battery_info->battery_capacity_granularity_1,
+ (u32)battery_info->battery_capacity_granularity_1,
battery->power_units);
p += sprintf(p, "Capacity Granularity 2: %d %sh\n",
- battery_info->battery_capacity_granularity_2,
+ (u32)battery_info->battery_capacity_granularity_2,
battery->power_units);
p += sprintf(p, "Model Number: %s\n",
battery_info->model_number);
@@ -242,7 +241,7 @@
}
else {
p += sprintf(p, "Present Rate: %d %s\n",
- battery_status->present_rate,
+ (u32)battery_status->present_rate,
battery->power_units);
}
@@ -251,7 +250,7 @@
}
else {
p += sprintf(p, "Remaining Capacity: %d %sh\n",
- battery_status->remaining_capacity,
+ (u32)battery_status->remaining_capacity,
battery->power_units);
}
@@ -260,7 +259,7 @@
}
else {
p += sprintf(p, "Battery Voltage: %d mV\n",
- battery_status->present_voltage);
+ (u32)battery_status->present_voltage);
}
end:
@@ -294,10 +293,10 @@
}
if (battery->is_present) {
- printk("Battery: socket found, battery present\n");
+ printk("ACPI: Battery socket found, battery present\n");
}
else {
- printk("Battery: socket found, battery absent\n");
+ printk("ACPI: Battery socket found, battery absent\n");
}
proc_entry = proc_mkdir(battery->uid, bt_proc_root);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/busmgr/bm.c linux/drivers/acpi/ospm/busmgr/bm.c
--- v2.4.13/linux/drivers/acpi/ospm/busmgr/bm.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/busmgr/bm.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: bm.c
- * $Revision: 47 $
+ * $Revision: 48 $
*
*****************************************************************************/
@@ -223,7 +223,7 @@
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+-------------------------------------------------------------------------------\n"));
}
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| %s[%02x]:[%p] flags[%02x] hid[%s] %s\n", type_string, device->handle, device->acpi_handle, device->flags, (device->id.hid[0] ? device->id.hid : " "), buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| %s[%02x]:[%p] flags[%02x] hid[%s] %s\n", type_string, device->handle, device->acpi_handle, device->flags, (device->id.hid[0] ? device->id.hid : " "), (char*)buffer.pointer));
if (flags & BM_PRINT_IDENTIFICATION) {
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| identification: uid[%s] adr[%08x]\n", device->id.uid, device->id.adr));
@@ -919,7 +919,7 @@
for (i=0; idevice_handle, pr->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Power_resource[%02x]:[%p] %s\n", pr->device_handle, pr->acpi_handle, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| system_level[S%d] resource_order[%d]\n", pr->system_level, pr->resource_order));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| state[D%d] reference_count[%d]\n", pr->state, pr->reference_count));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/busmgr/bmutils.c linux/drivers/acpi/ospm/busmgr/bmutils.c
--- v2.4.13/linux/drivers/acpi/ospm/busmgr/bmutils.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/busmgr/bmutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: bmutils.c
- * $Revision: 38 $
+ * $Revision: 43 $
*
*****************************************************************************/
@@ -81,11 +81,11 @@
}
if (pathname) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Evaluate object [%s.%s], %s\n", buffer.pointer, pathname,
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate object [%s.%s], %s\n", (char*)buffer.pointer, pathname,
acpi_format_exception(status)));
}
else {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Evaluate object [%s], %s\n", buffer.pointer,
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate object [%s], %s\n", (char*)buffer.pointer,
acpi_format_exception(status)));
}
@@ -175,68 +175,70 @@
*
****************************************************************************/
-/*
- * TBD: Don't assume numbers (in ASL) are 32-bit values!!!! (IA64)
- * TBD: Issue with 'assumed' types coming out of interpreter...
- * (e.g. toshiba _BIF)
- */
-
acpi_status
bm_extract_package_data (
acpi_object *package,
- acpi_buffer *package_format,
+ acpi_buffer *format,
acpi_buffer *buffer)
{
- acpi_status status = AE_OK;
- u8 *head = NULL;
- u8 *tail = NULL;
- u8 **pointer = NULL;
u32 tail_offset = 0;
- acpi_object *element = NULL;
u32 size_required = 0;
- char* format = NULL;
+ char *format_string = NULL;
u32 format_count = 0;
u32 i = 0;
+ u8 *head = NULL;
+ u8 *tail = NULL;
FUNCTION_TRACE("bm_extract_package_data");
- if (!package || (package->type != ACPI_TYPE_PACKAGE) ||
- (package->package.count == 0) || !package_format ||
- (package_format->length < 1) ||
- (!package_format->pointer) || !buffer) {
+ if (!package || (package->type != ACPI_TYPE_PACKAGE) || (package->package.count < 1)) {
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid 'package' argument\n"));
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- format_count = package_format->length - 1;
+ if (!format || !format->pointer || (format->length < 1)) {
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid 'format' argument\n"));
+ return_ACPI_STATUS(AE_BAD_PARAMETER);
+ }
+
+ if (!buffer) {
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid 'buffer' argument\n"));
+ return_ACPI_STATUS(AE_BAD_PARAMETER);
+ }
+ format_count = (format->length/sizeof(char)) - 1;
if (format_count > package->package.count) {
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Format specifies more objects [%d] than exist in package [%d].", format_count, package->package.count));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Format specifies more objects [%d] than exist in package [%d].", format_count, package->package.count));
return_ACPI_STATUS(AE_BAD_DATA);
}
- format = (char*)package_format->pointer;
+ format_string = (char*)format->pointer;
/*
* Calculate size_required.
*/
for (i=0; ipackage.elements[i]);
+
+ acpi_object *element = &(package->package.elements[i]);
+
+ if (!element) {
+ return_ACPI_STATUS(AE_BAD_DATA);
+ }
switch (element->type) {
case ACPI_TYPE_INTEGER:
- switch (format[i]) {
+ switch (format_string[i]) {
case 'N':
size_required += sizeof(acpi_integer);
tail_offset += sizeof(acpi_integer);
break;
case 'S':
- size_required += sizeof(u8*) +
- sizeof(acpi_integer) + 1;
- tail_offset += sizeof(acpi_integer);
+ size_required += sizeof(char*) + sizeof(acpi_integer) + sizeof(char);
+ tail_offset += sizeof(char*);
break;
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Invalid package element [%d]: got number, expecing [%c].\n", i, format[i]));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid package element [%d]: got number, expecing [%c].\n", i, format_string[i]));
return_ACPI_STATUS(AE_BAD_DATA);
break;
}
@@ -244,19 +246,17 @@
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
- switch (format[i]) {
+ switch (format_string[i]) {
case 'S':
- size_required += sizeof(u8*) +
- element->string.length + 1;
- tail_offset += sizeof(u8*);
+ size_required += sizeof(char*) + (element->string.length * sizeof(char)) + sizeof(char);
+ tail_offset += sizeof(char*);
break;
case 'B':
- size_required += sizeof(u8*) +
- element->buffer.length;
+ size_required += sizeof(u8*) + (element->buffer.length * sizeof(u8));
tail_offset += sizeof(u8*);
break;
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Invalid package element [%d] got string/buffer, expecing [%c].\n", i, format[i]));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid package element [%d] got string/buffer, expecing [%c].\n", i, format_string[i]));
return_ACPI_STATUS(AE_BAD_DATA);
break;
}
@@ -264,52 +264,52 @@
case ACPI_TYPE_PACKAGE:
default:
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found unsupported element at index=%d\n", i));
/* TBD: handle nested packages... */
return_ACPI_STATUS(AE_SUPPORT);
break;
}
}
- if (size_required > buffer->length) {
+ /*
+ * Validate output buffer.
+ */
+ if (buffer->length < size_required) {
buffer->length = size_required;
return_ACPI_STATUS(AE_BUFFER_OVERFLOW);
}
-
- buffer->length = size_required;
-
- if (!buffer->pointer) {
+ else if (buffer->length != size_required || !buffer->pointer) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
head = buffer->pointer;
tail = buffer->pointer + tail_offset;
- /*
- * Extract package data:
+ /*
+ * Extract package data.
*/
for (i=0; ipackage.elements[i]);
+ u8 **pointer = NULL;
+ acpi_object *element = &(package->package.elements[i]);
switch (element->type) {
case ACPI_TYPE_INTEGER:
- switch (format[i]) {
+ switch (format_string[i]) {
case 'N':
- *((acpi_integer*)head) =
- element->integer.value;
+ *((acpi_integer*)head) = element->integer.value;
head += sizeof(acpi_integer);
break;
case 'S':
pointer = (u8**)head;
*pointer = tail;
- *((acpi_integer*)tail) =
- element->integer.value;
+ *((acpi_integer*)tail) = element->integer.value;
head += sizeof(acpi_integer*);
tail += sizeof(acpi_integer);
/* NULL terminate string */
- *tail = 0;
- tail++;
+ *tail = (char)0;
+ tail += sizeof(char);
break;
default:
/* Should never get here */
@@ -319,25 +319,23 @@
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
- switch (format[i]) {
+ switch (format_string[i]) {
case 'S':
pointer = (u8**)head;
*pointer = tail;
- memcpy(tail, element->string.pointer,
- element->string.length);
- head += sizeof(u8*);
- tail += element->string.length;
+ memcpy(tail, element->string.pointer, element->string.length);
+ head += sizeof(char*);
+ tail += element->string.length * sizeof(char);
/* NULL terminate string */
- *tail = 0;
- tail++;
+ *tail = (char)0;
+ tail += sizeof(char);
break;
case 'B':
pointer = (u8**)head;
*pointer = tail;
- memcpy(tail, element->buffer.pointer,
- element->buffer.length);
+ memcpy(tail, element->buffer.pointer, element->buffer.length);
head += sizeof(u8*);
- tail += element->buffer.length;
+ tail += element->buffer.length * sizeof(u8);
break;
default:
/* Should never get here */
@@ -353,7 +351,7 @@
}
}
- return_ACPI_STATUS(status);
+ return_ACPI_STATUS(AE_OK);
}
@@ -465,7 +463,7 @@
*/
status = bm_evaluate_object(handle, pathname, NULL, &buffer);
if (ACPI_FAILURE(status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "failed to evaluate object (%s)\n",
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "failed to evaluate object (%s)\n",
acpi_format_exception(status)));
goto end;
}
@@ -569,7 +567,7 @@
if (!element || (element->type != ACPI_TYPE_STRING)) {
status = AE_BAD_DATA;
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Invalid element in package (not a device reference).\n"));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Invalid element in package (not a device reference).\n"));
DEBUG_EVAL_ERROR (ACPI_LV_WARN, handle, pathname, status);
break;
}
@@ -582,7 +580,7 @@
element->string.pointer, &reference_handle);
if (ACPI_FAILURE(status)) {
status = AE_BAD_DATA;
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Unable to resolve device reference [%s].\n", element->string.pointer));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Unable to resolve device reference [%s].\n", element->string.pointer));
DEBUG_EVAL_ERROR (ACPI_LV_WARN, handle, pathname, status);
break;
}
@@ -594,12 +592,12 @@
&(reference_list->handles[i]));
if (ACPI_FAILURE(status)) {
status = AE_BAD_DATA;
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Unable to resolve device reference for [%p].\n", reference_handle));
+ ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Unable to resolve device reference for [%p].\n", reference_handle));
DEBUG_EVAL_ERROR (ACPI_LV_WARN, handle, pathname, status);
break;
}
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Resolved reference [%s]->[%p]->[%02x]\n", element->string.pointer, reference_handle, reference_list->handles[i]));
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resolved reference [%s]->[%p]->[%02x]\n", element->string.pointer, reference_handle, reference_list->handles[i]));
(reference_list->count)++;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/button/bn.c linux/drivers/acpi/ospm/button/bn.c
--- v2.4.13/linux/drivers/acpi/ospm/button/bn.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/button/bn.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: bn.c
- * $Revision: 25 $
+ * $Revision: 27 $
*
*****************************************************************************/
@@ -81,16 +81,16 @@
case BN_TYPE_POWER_BUTTON:
case BN_TYPE_POWER_BUTTON_FIXED:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Power_button[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Power_button[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, (char*)buffer.pointer));
break;
case BN_TYPE_SLEEP_BUTTON:
case BN_TYPE_SLEEP_BUTTON_FIXED:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Sleep_button[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Sleep_button[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, (char*)buffer.pointer));
break;
case BN_TYPE_LID_SWITCH:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Lid_switch[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Lid_switch[%02x]:[%p] %s\n", button->device_handle, button->acpi_handle, (char*)buffer.pointer));
break;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/button/bn_osl.c linux/drivers/acpi/ospm/button/bn_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/button/bn_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/button/bn_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: bn_osl.c
- * $Revision: 14 $
+ * $Revision: 16 $
*
*****************************************************************************/
@@ -35,7 +35,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - Button Driver");
-MODULE_LICENSE("GPL");
#define BN_PROC_ROOT "button"
@@ -47,6 +46,15 @@
static struct proc_dir_entry *bn_proc_root = NULL;
+#define BN_TYPE_UNKNOWN 0
+#define BN_TYPE_FIXED 1
+#define BN_TYPE_GENERIC 2
+
+static int bn_power_button = BN_TYPE_UNKNOWN;
+static int bn_sleep_button = BN_TYPE_UNKNOWN;
+static int bn_lid_switch = BN_TYPE_UNKNOWN;
+
+
/****************************************************************************
*
* FUNCTION: bn_osl_add_device
@@ -65,24 +73,77 @@
switch (button->type) {
- case BN_TYPE_POWER_BUTTON:
case BN_TYPE_POWER_BUTTON_FIXED:
- printk(KERN_INFO "Power Button: found\n");
+ bn_power_button = BN_TYPE_FIXED;
+ printk(KERN_INFO "ACPI: Power Button (FF) found\n");
if (!proc_mkdir(BN_PROC_POWER_BUTTON, bn_proc_root)) {
status = AE_ERROR;
}
break;
- case BN_TYPE_SLEEP_BUTTON:
+ case BN_TYPE_POWER_BUTTON:
+ /*
+ * Avoid creating multiple /proc entries when (buggy) ACPI
+ * BIOS tables erroneously list both fixed- and generic-
+ * feature buttons. Note that fixed-feature buttons are
+ * always enumerated first (and there can only be one) so
+ * we only need to check here.
+ */
+ switch (bn_power_button) {
+ case BN_TYPE_GENERIC:
+ printk(KERN_WARNING "ACPI: Multiple generic-space power buttons detected, using first\n");
+ break;
+ case BN_TYPE_FIXED:
+ printk(KERN_WARNING "ACPI: Multiple power buttons detected, ignoring fixed-feature\n");
+ default:
+ printk(KERN_INFO "ACPI: Power Button (CM) found\n");
+ bn_power_button = BN_TYPE_GENERIC;
+ if (!proc_mkdir(BN_PROC_POWER_BUTTON, bn_proc_root)) {
+ status = AE_ERROR;
+ }
+ break;
+ }
+ break;
+
case BN_TYPE_SLEEP_BUTTON_FIXED:
- printk(KERN_INFO "Sleep Button: found\n");
+ bn_sleep_button = BN_TYPE_FIXED;
+ printk(KERN_INFO "ACPI: Sleep Button (FF) found\n");
if (!proc_mkdir(BN_PROC_SLEEP_BUTTON, bn_proc_root)) {
status = AE_ERROR;
}
break;
+ case BN_TYPE_SLEEP_BUTTON:
+ /*
+ * Avoid creating multiple /proc entries when (buggy) ACPI
+ * BIOS tables erroneously list both fixed- and generic-
+ * feature buttons. Note that fixed-feature buttons are
+ * always enumerated first (and there can only be one) so
+ * we only need to check here.
+ */
+ switch (bn_sleep_button) {
+ case BN_TYPE_GENERIC:
+ printk(KERN_WARNING "ACPI: Multiple generic-space sleep buttons detected, using first\n");
+ break;
+ case BN_TYPE_FIXED:
+ printk(KERN_WARNING "ACPI: Multiple sleep buttons detected, ignoring fixed-feature\n");
+ default:
+ bn_sleep_button = BN_TYPE_GENERIC;
+ printk(KERN_INFO "ACPI: Sleep Button (CM) found\n");
+ if (!proc_mkdir(BN_PROC_SLEEP_BUTTON, bn_proc_root)) {
+ status = AE_ERROR;
+ }
+ break;
+ }
+ break;
+
case BN_TYPE_LID_SWITCH:
- printk(KERN_INFO "Lid Switch: found\n");
+ if (bn_lid_switch) {
+ printk(KERN_WARNING "ACPI: Multiple generic-space lid switches detected, using first\n");
+ break;
+ }
+ bn_lid_switch = BN_TYPE_GENERIC;
+ printk(KERN_INFO "ACPI: Lid Switch (CM) found\n");
if (!proc_mkdir(BN_PROC_LID_SWITCH, bn_proc_root)) {
status = AE_ERROR;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/ec/ec_osl.c linux/drivers/acpi/ospm/ec/ec_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/ec/ec_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/ec/ec_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: ec_osl.c
- * $Revision: 10 $
+ * $Revision: 11 $
*
*****************************************************************************/
@@ -36,25 +36,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - Embedded Controller Driver");
-MODULE_LICENSE("GPL");
-
-#ifdef ACPI_DEBUG
-
-static int dbg_layer = ACPI_COMPONENT_DEFAULT;
-MODULE_PARM(dbg_layer, "i");
-MODULE_PARM_DESC(dbg_layer, "Controls debug output (see acpi_dbg_layer).\n");
-
-static int dbg_level = DEBUG_DEFAULT;
-MODULE_PARM(dbg_level, "i");
-MODULE_PARM_DESC(dbg_level, "Controls debug output (see acpi_dbg_level).\n");
-
-#endif /*ACPI_DEBUG*/
-
-
-#ifdef ACPI_DEBUG
-static u32 save_dbg_layer;
-static u32 save_dbg_level;
-#endif /*ACPI_DEBUG*/
extern struct proc_dir_entry *bm_proc_root;
@@ -80,14 +61,6 @@
if (!bm_proc_root)
return -ENODEV;
-#ifdef ACPI_DEBUG
- save_dbg_layer = acpi_dbg_layer;
- acpi_dbg_layer = dbg_layer;
-
- save_dbg_level = acpi_dbg_level;
- acpi_dbg_level = dbg_level;
-#endif /*ACPI_DEBUG*/
-
status = ec_initialize();
return (ACPI_SUCCESS(status)) ? 0 : -ENODEV;
@@ -109,11 +82,6 @@
ec_osl_cleanup(void)
{
ec_terminate();
-
-#ifdef ACPI_DEBUG
- acpi_dbg_layer = save_dbg_layer;
- acpi_dbg_level = save_dbg_level;
-#endif /*ACPI_DEBUG*/
return;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/ec/ecmain.c linux/drivers/acpi/ospm/ec/ecmain.c
--- v2.4.13/linux/drivers/acpi/ospm/ec/ecmain.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/ec/ecmain.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: ecmain.c
- * $Revision: 28 $
+ * $Revision: 29 $
*
*****************************************************************************/
@@ -79,7 +79,7 @@
* Print out basic thermal zone information.
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Embedded_controller[%02x]:[%p] %s\n", ec->device_handle, ec->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Embedded_controller[%02x]:[%p] %s\n", ec->device_handle, ec->acpi_handle, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| gpe_bit[%02x] status/command_port[%02x] data_port[%02x]\n", ec->gpe_bit, ec->status_port, ec->data_port));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/ec/ecspace.c linux/drivers/acpi/ospm/ec/ecspace.c
--- v2.4.13/linux/drivers/acpi/ospm/ec/ecspace.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/ec/ecspace.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: ecspace.c
- * $Revision: 22 $
+ * $Revision: 23 $
*
*****************************************************************************/
@@ -113,7 +113,7 @@
break;
default:
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Received request with invalid function [%p].\n", function));
+ ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Received request with invalid function [%X].\n", function));
return_ACPI_STATUS(AE_BAD_PARAMETER);
break;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/include/bn.h linux/drivers/acpi/ospm/include/bn.h
--- v2.4.13/linux/drivers/acpi/ospm/include/bn.h Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/include/bn.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: bn.h
- * $Revision: 10 $
+ * $Revision: 12 $
*
*****************************************************************************/
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/include/bt.h linux/drivers/acpi/ospm/include/bt.h
--- v2.4.13/linux/drivers/acpi/ospm/include/bt.h Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/include/bt.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: bt.h
- * $Revision: 16 $
+ * $Revision: 18 $
*
*****************************************************************************/
@@ -66,15 +66,15 @@
*/
typedef struct
{
- u32 power_unit;
- u32 design_capacity;
- u32 last_full_capacity;
- u32 battery_technology;
- u32 design_voltage;
- u32 design_capacity_warning;
- u32 design_capacity_low;
- u32 battery_capacity_granularity_1;
- u32 battery_capacity_granularity_2;
+ acpi_integer power_unit;
+ acpi_integer design_capacity;
+ acpi_integer last_full_capacity;
+ acpi_integer battery_technology;
+ acpi_integer design_voltage;
+ acpi_integer design_capacity_warning;
+ acpi_integer design_capacity_low;
+ acpi_integer battery_capacity_granularity_1;
+ acpi_integer battery_capacity_granularity_2;
acpi_string model_number;
acpi_string serial_number;
acpi_string battery_type;
@@ -89,10 +89,10 @@
*/
typedef struct
{
- u32 state;
- u32 present_rate;
- u32 remaining_capacity;
- u32 present_voltage;
+ acpi_integer state;
+ acpi_integer present_rate;
+ acpi_integer remaining_capacity;
+ acpi_integer present_voltage;
} BT_BATTERY_STATUS;
@@ -137,7 +137,7 @@
acpi_status
bt_get_status (
- BT_CONTEXT *battery,
+ BT_CONTEXT *battery,
BT_BATTERY_STATUS **battery_status);
acpi_status
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/include/pr.h linux/drivers/acpi/ospm/include/pr.h
--- v2.4.13/linux/drivers/acpi/ospm/include/pr.h Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/include/pr.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: processor.h
- * $Revision: 9 $
+ * $Revision: 13 $
*
*****************************************************************************/
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/include/tz.h linux/drivers/acpi/ospm/include/tz.h
--- v2.4.13/linux/drivers/acpi/ospm/include/tz.h Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/include/tz.h Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: tz.h
- * $Revision: 21 $
+ * $Revision: 24 $
*
*****************************************************************************/
@@ -116,68 +116,42 @@
typedef u32 TZ_STATE;
#define TZ_STATE_OK ((TZ_STATE) 0x00000000)
+#define TZ_STATE_HOT ((TZ_STATE) 0x10000000)
#define TZ_STATE_ACTIVE ((TZ_STATE) 0x20000000)
#define TZ_STATE_PASSIVE ((TZ_STATE) 0x40000000)
#define TZ_STATE_CRITICAL ((TZ_STATE) 0x80000000)
-
-/*
- * TZ_THRESHOLD:
- * -------------
- * Information on an individual threshold.
- */
typedef struct {
- TZ_THRESHOLD_TYPE type;
- u32 index;
u32 temperature;
- TZ_COOLING_STATE cooling_state;
- BM_HANDLE_LIST cooling_devices;
-} TZ_THRESHOLD;
-
-
-/*
- * TZ_THRESHOLD_LIST:
- * ------------------
- * Container for the thresholds of a given thermal zone.
- * Note that thresholds are always ordered by increasing
- * temperature value to simplify use by thermal policy.
- */
-typedef struct {
- u32 count;
- TZ_THRESHOLD thresholds[TZ_MAX_THRESHOLDS];
-} TZ_THRESHOLD_LIST;
-
+} TZ_CRITICAL_THRESHOLD;
-/*
- * TZ_CRITICAL_POLICY:
- * -------------------
- */
typedef struct {
- TZ_THRESHOLD *threshold;
-} TZ_CRITICAL_POLICY;
-
+ u8 is_valid;
+ u32 temperature;
+} TZ_HOT_THRESHOLD;
-/*
- * TZ_PASSIVE_POLICY:
- * ------------------
- */
typedef struct {
+ u8 is_valid;
+ u32 temperature;
u32 tc1;
u32 tc2;
u32 tsp;
- TZ_THRESHOLD *threshold;
-} TZ_PASSIVE_POLICY;
-
+ BM_HANDLE_LIST devices;
+} TZ_PASSIVE_THRESHOLD;
-/*
- * TZ_ACTIVE_POLICY:
- * -----------------
- */
typedef struct {
- u32 threshold_count;
- TZ_THRESHOLD *threshold[TZ_MAX_ACTIVE_THRESHOLDS];
-} TZ_ACTIVE_POLICY;
+ u8 is_valid;
+ u32 temperature;
+ TZ_COOLING_STATE cooling_state;
+ BM_HANDLE_LIST devices;
+} TZ_ACTIVE_THRESHOLD;
+typedef struct {
+ TZ_CRITICAL_THRESHOLD critical;
+ TZ_HOT_THRESHOLD hot;
+ TZ_PASSIVE_THRESHOLD passive;
+ TZ_ACTIVE_THRESHOLD active[TZ_MAX_ACTIVE_THRESHOLDS];
+} TZ_THRESHOLDS;
/*
* TZ_POLICY:
@@ -188,11 +162,7 @@
TZ_STATE state;
TZ_COOLING_MODE cooling_mode;
u32 polling_freq;
- TZ_THRESHOLD_LIST threshold_list;
- TZ_CRITICAL_POLICY critical;
- TZ_PASSIVE_POLICY passive;
- TZ_ACTIVE_POLICY active;
- /* TBD: Linux-specific */
+ TZ_THRESHOLDS thresholds;
struct timer_list timer;
} TZ_POLICY;
@@ -213,7 +183,7 @@
* Function Prototypes
*****************************************************************************/
-/* thermal_zone.c */
+/* tz.c */
acpi_status
tz_initialize (void);
@@ -234,46 +204,49 @@
acpi_status
tz_get_temperature (
- TZ_CONTEXT *thermal_zone,
- u32 *temperature);
+ TZ_CONTEXT *tz);
acpi_status
tz_get_thresholds (
- TZ_CONTEXT *thermal_zone,
- TZ_THRESHOLD_LIST *threshold_list);
+ TZ_CONTEXT *tz);
+
+acpi_status
+tz_set_cooling_preference (
+ TZ_CONTEXT *tz,
+ TZ_COOLING_MODE cooling_mode);
void
tz_print (
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
/* tzpolicy.c */
acpi_status
tz_policy_add_device (
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
acpi_status
tz_policy_remove_device (
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
void
tz_policy_check (
void *context);
-/* Thermal Zone Driver OSL */
+/* tz_osl.c */
acpi_status
tz_osl_add_device (
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
acpi_status
tz_osl_remove_device (
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
acpi_status
tz_osl_generate_event (
u32 event,
- TZ_CONTEXT *thermal_zone);
+ TZ_CONTEXT *tz);
#endif /* __TZ_H__ */
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/processor/pr.c linux/drivers/acpi/ospm/processor/pr.c
--- v2.4.13/linux/drivers/acpi/ospm/processor/pr.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/processor/pr.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: pr.c
- * $Revision: 32 $
+ * $Revision: 34 $
*
*****************************************************************************/
@@ -63,7 +63,7 @@
#ifdef ACPI_DEBUG
acpi_buffer buffer;
- PROC_NAME("pr_print");
+ FUNCTION_TRACE("pr_print");
buffer.length = 256;
buffer.pointer = acpi_os_callocate(buffer.length);
@@ -80,7 +80,7 @@
* Print out basic processor information.
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Processor[%02x]:[%p] uid[%02x] %s\n", processor->device_handle, processor->acpi_handle, processor->uid, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Processor[%02x]:[%p] uid[%02x] %s\n", processor->device_handle, processor->acpi_handle, processor->uid, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| power: %cC0 %cC1 %cC2[%d] %cC3[%d]\n", (processor->power.state[0].is_valid?'+':'-'), (processor->power.state[1].is_valid?'+':'-'), (processor->power.state[2].is_valid?'+':'-'), processor->power.state[2].latency, (processor->power.state[3].is_valid?'+':'-'), processor->power.state[3].latency));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| performance: states[%d]\n", processor->performance.state_count));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
@@ -140,7 +140,7 @@
* Processor Block:
* ----------------
*/
- MEMSET(&acpi_object, 0, sizeof(acpi_object));
+ memset(&acpi_object, 0, sizeof(acpi_object));
buffer.length = sizeof(acpi_object);
buffer.pointer = &acpi_object;
@@ -261,8 +261,8 @@
FUNCTION_TRACE("pr_initialize");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Initialize power (Cx state) policy.
@@ -307,8 +307,8 @@
FUNCTION_TRACE("pr_terminate");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Terminate power (Cx state) policy.
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/processor/pr_osl.c linux/drivers/acpi/ospm/processor/pr_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/processor/pr_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/processor/pr_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: pr_osl.c
- * $Revision: 18 $
+ * $Revision: 21 $
*
*****************************************************************************/
@@ -37,7 +37,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - IA32 Processor Driver");
-MODULE_LICENSE("GPL");
#define PR_PROC_ROOT "processor"
@@ -157,14 +156,10 @@
printk(" C%d", i);
}
}
-
- if (processor->performance.state_count > 1) {
- printk(", throttling states: %d", processor->performance.state_count);
- }
-
- if (acpi_piix4_bmisx)
- printk(", PIIX workaround active");
-
+ if (processor->performance.state_count > 1)
+ printk(", %d throttling states", processor->performance.state_count);
+ if (acpi_piix4_bmisx && processor->power.state[3].is_valid)
+ printk(" (PIIX errata enabled)");
printk("\n");
sprintf(processor_uid, "%d", processor->uid);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/processor/prperf.c linux/drivers/acpi/ospm/processor/prperf.c
--- v2.4.13/linux/drivers/acpi/ospm/processor/prperf.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/processor/prperf.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: prperf.c
- * $Revision: 19 $
+ * $Revision: 21 $
*
*****************************************************************************/
@@ -179,7 +179,8 @@
return_ACPI_STATUS(AE_BAD_DATA);
}
- if (processor->performance.state_count == 1) {
+ if ((state == processor->performance.active_state) ||
+ (processor->performance.state_count == 1)) {
return_ACPI_STATUS(AE_OK);
}
@@ -233,6 +234,8 @@
acpi_os_write_port(processor->pblk.address, pblk_value, 32);
}
+ processor->performance.active_state = state;
+
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Processor [%02x] set to performance state [%d%%].\n", processor->device_handle, processor->performance.state[state].performance));
return_ACPI_STATUS(AE_OK);
@@ -279,14 +282,14 @@
if (performance->active_state <
(performance->state_count-1)) {
status = pr_perf_set_state(processor,
- (performance->active_state-1));
+ (performance->active_state+1));
}
break;
case PR_PERF_INC:
if (performance->active_state > 0) {
status = pr_perf_set_state(processor,
- (performance->active_state+1));
+ (performance->active_state-1));
}
break;
@@ -302,7 +305,7 @@
}
if (ACPI_SUCCESS(status)) {
- performance->thermal_limit = limit;
+ performance->thermal_limit = performance->active_state;
}
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Processor [%02x] thermal performance limit set to [%d%%].\n", processor->device_handle, processor->performance.state[performance->active_state].performance));
@@ -403,8 +406,20 @@
* Get Current State:
* ------------------
*/
- status = pr_perf_get_state(processor,
- &(processor->performance.active_state));
+ status = pr_perf_get_state(processor, &(processor->performance.active_state));
+ if (ACPI_FAILURE(status)) {
+ return_ACPI_STATUS(status);
+ }
+
+ /*
+ * Set to Maximum Performance:
+ * ---------------------------
+ * We'll let subsequent policy (e.g. thermal/power) decide to lower
+ * performance if it so chooses, but for now crank up the speed.
+ */
+ if (0 != processor->performance.active_state) {
+ status = pr_perf_set_state(processor, 0);
+ }
return_ACPI_STATUS(status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/processor/prpower.c linux/drivers/acpi/ospm/processor/prpower.c
--- v2.4.13/linux/drivers/acpi/ospm/processor/prpower.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/processor/prpower.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: prpower.c
- * $Revision: 30 $
+ * $Revision: 32 $
*
*****************************************************************************/
@@ -41,7 +41,7 @@
* Globals
****************************************************************************/
-extern fadt_descriptor_rev2 acpi_fadt;
+extern FADT_DESCRIPTOR acpi_fadt;
static u32 last_idle_jiffies = 0;
static PR_CONTEXT *processor_list[NR_CPUS];
static void (*pr_pm_idle_save)(void) = NULL;
@@ -207,7 +207,10 @@
case PR_C1:
/* Invoke C1 */
enable(); halt();
- /* no C1 time measurement, so just enter some number of times */
+ /*
+ * TBD: Can't get time duration while in C1, as resumes
+ * go to an ISR rather than here.
+ */
time_elapsed = 0xFFFFFFFF;
break;
@@ -217,8 +220,7 @@
/* Invoke C2 */
acpi_os_read_port(processor->power.p_lvl2, NULL, 8);
/* Dummy op - must do something useless after P_LVL2 read */
- acpi_hw_register_bit_access(ACPI_READ, ACPI_MTX_DO_NOT_LOCK,
- BM_STS);
+ acpi_hw_register_bit_access(ACPI_READ, ACPI_MTX_DO_NOT_LOCK, BM_STS);
/* Compute time elapsed */
acpi_get_timer(&end_ticks);
/* Re-enable interrupts */
@@ -228,15 +230,13 @@
case PR_C3:
/* Disable bus master arbitration */
- acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK,
- ARB_DIS, 1);
+ acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_DO_NOT_LOCK, ARB_DIS, 1);
/* See how long we're asleep for */
acpi_get_timer(&start_ticks);
/* Invoke C3 */
acpi_os_read_port(processor->power.p_lvl3, NULL, 8);
/* Dummy op - must do something useless after P_LVL3 read */
- acpi_hw_register_bit_access(ACPI_READ, ACPI_MTX_DO_NOT_LOCK,
- BM_STS);
+ acpi_hw_register_bit_access(ACPI_READ, ACPI_MTX_DO_NOT_LOCK, BM_STS);
/* Compute time elapsed */
acpi_get_timer(&end_ticks);
/* Enable bus master arbitration */
@@ -266,18 +266,14 @@
c_state->promotion.count++;
c_state->demotion.count = 0;
- if (c_state->promotion.count >=
- c_state->promotion.count_threshold) {
-
+ if (c_state->promotion.count >= c_state->promotion.count_threshold) {
/*
* Bus Mastering Activity, if active and used
* by this state's promotion policy, prevents
* promotions from occuring.
*/
- if (bm_control && !(processor->power.bm_activity &
- c_state->promotion.bm_threshold)) {
+ if (!bm_control || !(processor->power.bm_activity & c_state->promotion.bm_threshold))
next_state = c_state->promotion.target_state;
- }
}
}
@@ -305,10 +301,8 @@
* state's promotion policy, causes an immediate demotion
* to occur.
*/
- if (bm_control && (processor->power.bm_activity &
- c_state->demotion.bm_threshold)) {
+ if (bm_control && (processor->power.bm_activity & c_state->demotion.bm_threshold))
next_state = c_state->demotion.target_state;
- }
}
/*
@@ -627,7 +621,7 @@
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Max CPUs[%d], this CPU[%d].\n", NR_CPUS, smp_processor_id()));
- /* only use C3 if we can control busmastering */
+ /* Only use C3 if we can control bus mastering. */
if (acpi_fadt.V1_pm2_cnt_blk && acpi_fadt.pm2_cnt_len)
bm_control = 1;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/system/sm.c linux/drivers/acpi/ospm/system/sm.c
--- v2.4.13/linux/drivers/acpi/ospm/system/sm.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/system/sm.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: sm.c
- * $Revision: 19 $
+ * $Revision: 20 $
*
*****************************************************************************/
@@ -71,7 +71,7 @@
* Print out basic system information.
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| System[%02x]:[%p] %s\n", system->device_handle, system->acpi_handle, buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| System[%02x]:[%p] %s\n", system->device_handle, system->acpi_handle, (char*)buffer.pointer));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| states: %cS0 %cS1 %cS2 %cS3 %cS4 %cS5\n", (system->states[0]?'+':'-'), (system->states[1]?'+':'-'), (system->states[2]?'+':'-'), (system->states[3]?'+':'-'), (system->states[4]?'+':'-'), (system->states[5]?'+':'-')));
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/system/sm_osl.c linux/drivers/acpi/ospm/system/sm_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/system/sm_osl.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/system/sm_osl.c Wed Oct 24 14:06:22 2001
@@ -42,7 +42,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - ACPI System Driver");
-MODULE_LICENSE("GPL");
#define SM_PROC_INFO "info"
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/thermal/tz.c linux/drivers/acpi/ospm/thermal/tz.c
--- v2.4.13/linux/drivers/acpi/ospm/thermal/tz.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/thermal/tz.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*****************************************************************************
*
* Module Name: tz.c
- * $Revision: 40 $
+ * $Revision: 44 $
*
*****************************************************************************/
@@ -23,22 +23,24 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/*
- * TBD: 1. Finish /proc interface (threshold values, _SCP changes, etc.)
- * 2. Update policy for ACPI 2.0 compliance
- * 3. Check for all required methods prior to enabling a threshold
- * 4. Support for multiple processors in a zone (passive cooling devices)
- */
#include
#include
#include "tz.h"
+
#define _COMPONENT ACPI_THERMAL
MODULE_NAME ("tz")
/****************************************************************************
+ * Globals
+ ****************************************************************************/
+
+extern int TZP;
+
+
+/****************************************************************************
* Internal Functions
****************************************************************************/
@@ -46,73 +48,63 @@
*
* FUNCTION: tz_print
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION: Prints out information on a specific thermal zone.
- *
****************************************************************************/
void
tz_print (
- TZ_CONTEXT *thermal_zone)
+ TZ_CONTEXT *tz)
{
#ifdef ACPI_DEBUG
acpi_buffer buffer;
u32 i,j = 0;
- TZ_THRESHOLD *threshold = NULL;
+ TZ_THRESHOLDS *thresholds = NULL;
- PROC_NAME("tz_print");
+ FUNCTION_TRACE("tz_print");
- if (!thermal_zone) {
+ if (!tz)
return;
- }
+
+ thresholds = &(tz->policy.thresholds);
buffer.length = 256;
buffer.pointer = acpi_os_callocate(buffer.length);
- if (!buffer.pointer) {
+ if (!buffer.pointer)
return;
- }
/*
* Get the full pathname for this ACPI object.
*/
- acpi_get_name(thermal_zone->acpi_handle, ACPI_FULL_PATHNAME, &buffer);
+ acpi_get_name(tz->acpi_handle, ACPI_FULL_PATHNAME, &buffer);
/*
* Print out basic thermal zone information.
*/
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Thermal_zone[%02x]:[%p] %s\n", thermal_zone->device_handle, thermal_zone->acpi_handle, buffer.pointer));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| temperature[%d] state[%08x]\n", thermal_zone->policy.temperature, thermal_zone->policy.state));
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| cooling_mode[%08x] polling_freq[%d]\n", thermal_zone->policy.cooling_mode, thermal_zone->policy.polling_freq));
-
- for (i=0; ipolicy.threshold_list.count; i++) {
-
- threshold = &(thermal_zone->policy.threshold_list.thresholds[i]);
-
- switch (threshold->type) {
- case TZ_THRESHOLD_CRITICAL:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| critical[%d]\n", threshold->temperature));
- break;
- case TZ_THRESHOLD_PASSIVE:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| passive[%d]: tc1[%d] tc2[%d] tsp[%d]\n", threshold->temperature, thermal_zone->policy.passive.tc1, thermal_zone->policy.passive.tc2, thermal_zone->policy.passive.tsp));
- break;
- case TZ_THRESHOLD_ACTIVE:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| active[%d]: index[%d]\n", threshold->temperature, threshold->index));
- break;
- default:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| unknown[%d]\n", threshold->temperature));
- break;
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Thermal_zone[%02x]:[%p] %s\n", tz->device_handle, tz->acpi_handle, (char*)buffer.pointer));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| temperature[%d] state[%08x]\n", tz->policy.temperature, tz->policy.state));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| cooling_mode[%08x] polling_freq[%d]\n", tz->policy.cooling_mode, tz->policy.polling_freq));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| critical[%d]\n", thresholds->critical.temperature));
+ if (thresholds->hot.is_valid)
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| hot[%d]\n", thresholds->hot.temperature));
+ if (thresholds->passive.is_valid) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| passive[%d]: tc1[%d] tc2[%d] tsp[%d]\n", thresholds->passive.temperature, thresholds->passive.tc1, thresholds->passive.tc2, thresholds->passive.tsp));
+ if (thresholds->passive.devices.count > 0) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| devices"));
+ for (j=0; (jpassive.devices.count && j<10); j++) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "[%02x]", thresholds->passive.devices.handles[j]));
+ }
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "\n"));
}
-
- if (threshold->cooling_devices.count > 0) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| cooling_devices"));
- for (j=0; (jcooling_devices.count && j<10); j++) {
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "[%02x]", threshold->cooling_devices.handles[j]));
+ }
+ for (i=0; iactive[i].is_valid)
+ break;
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| active[%d]: index[%d]\n", thresholds->active[i].temperature, i));
+ if (thresholds->active[i].devices.count > 0) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| devices"));
+ for (j=0; (jactive[i].devices.count && j<10); j++) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "[%02x]", thresholds->active[i].devices.handles[j]));
}
-
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "\n"));
}
}
@@ -130,32 +122,29 @@
*
* FUNCTION: tz_get_temperaturee
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
tz_get_temperature (
- TZ_CONTEXT *thermal_zone,
- u32 *temperature)
+ TZ_CONTEXT *tz)
{
acpi_status status = AE_OK;
FUNCTION_TRACE("tz_get_temperature");
- if (!thermal_zone || !temperature) {
+ if (!tz) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
/*
- * Evaluate the _TMP driver method to get the current temperature.
+ * Evaluate the _TMP method to get the current temperature.
*/
- status = bm_evaluate_simple_integer(thermal_zone->acpi_handle,
- "_TMP", temperature);
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_TMP", &(tz->policy.temperature));
+ if (ACPI_FAILURE(status)) {
+ return_ACPI_STATUS(status);
+ }
+
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Temperature is %d d_k\n", tz->policy.temperature));
return_ACPI_STATUS(status);
}
@@ -165,17 +154,11 @@
*
* FUNCTION: tz_set_cooling_preference
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
tz_set_cooling_preference (
- TZ_CONTEXT *thermal_zone,
+ TZ_CONTEXT *tz,
TZ_COOLING_MODE cooling_mode)
{
acpi_status status = AE_OK;
@@ -184,8 +167,7 @@
FUNCTION_TRACE("tz_set_cooling_preference");
- if (!thermal_zone || ((cooling_mode != TZ_COOLING_MODE_ACTIVE) &&
- (cooling_mode != TZ_COOLING_MODE_PASSIVE))) {
+ if (!tz || ((cooling_mode != TZ_COOLING_MODE_ACTIVE) && (cooling_mode != TZ_COOLING_MODE_PASSIVE))) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
@@ -193,204 +175,143 @@
* Build the argument list, which simply consists of the current
* cooling preference.
*/
- MEMSET(&arg_list, 0, sizeof(acpi_object));
+ memset(&arg_list, 0, sizeof(acpi_object));
arg_list.count = 1;
arg_list.pointer = &arg0;
- MEMSET(&arg0, 0, sizeof(acpi_object));
+ memset(&arg0, 0, sizeof(acpi_object));
arg0.type = ACPI_TYPE_INTEGER;
arg0.integer.value = cooling_mode;
/*
* Evaluate "_SCP" - setting the new cooling preference.
*/
- status = acpi_evaluate_object(thermal_zone->acpi_handle, "_SCP",
- &arg_list, NULL);
+ status = acpi_evaluate_object(tz->acpi_handle, "_SCP", &arg_list, NULL);
+ if (ACPI_FAILURE(status)) {
+ tz->policy.cooling_mode = -1;
+ return_ACPI_STATUS(status);
+ }
+
+ tz->policy.cooling_mode = cooling_mode;
return_ACPI_STATUS(status);
}
-/***************************************************************************
- *
- * FUNCTION: tz_get_single_threshold
- *
- * PARAMETERS:
- *
- * RETURN:
+/****************************************************************************
*
- * DESCRIPTION:
+ * FUNCTION: tz_get_thresholds
*
****************************************************************************/
acpi_status
-tz_get_single_threshold (
- TZ_CONTEXT *thermal_zone,
- TZ_THRESHOLD *threshold)
+tz_get_thresholds (
+ TZ_CONTEXT *tz)
{
- acpi_status status = AE_OK;
+ acpi_status status = AE_OK;
+ TZ_THRESHOLDS *thresholds = NULL;
+ u32 value = 0;
+ u32 i = 0;
- FUNCTION_TRACE("tz_get_single_threshold");
+ FUNCTION_TRACE("acpi_tz_get_thresholds");
- if (!thermal_zone || !threshold) {
+ if (!tz) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- switch (threshold->type) {
+ thresholds = &(tz->policy.thresholds);
- /*
- * Critical Threshold:
- * -------------------
- */
- case TZ_THRESHOLD_CRITICAL:
- threshold->index = 0;
- threshold->cooling_devices.count = 0;
- status = bm_evaluate_simple_integer(
- thermal_zone->acpi_handle, "_CRT",
- &(threshold->temperature));
- break;
-
- /*
- * Passive Threshold:
- * ------------------
- * Evaluate _PSV to get the threshold temperature and _PSL to get
- * references to all passive cooling devices.
- */
- case TZ_THRESHOLD_PASSIVE:
- threshold->index = 0;
- threshold->cooling_devices.count = 0;
- status = bm_evaluate_simple_integer(
- thermal_zone->acpi_handle, "_PSV",
- &(threshold->temperature));
- if (ACPI_SUCCESS(status)) {
- status = bm_evaluate_reference_list(
- thermal_zone->acpi_handle, "_PSL",
- &(threshold->cooling_devices));
- }
+ /* Critical Shutdown (required) */
- break;
-
- /*
- * Active Thresholds:
- * ------------------
- * Evaluate _ACx to get all threshold temperatures, and _ALx to get
- * references to all passive cooling devices.
- */
- case TZ_THRESHOLD_ACTIVE:
- {
- char object_name[5] = {'_','A', 'C',
- ('0'+threshold->index),'\0'};
- status = bm_evaluate_simple_integer(
- thermal_zone->acpi_handle, object_name,
- &(threshold->temperature));
- if (ACPI_SUCCESS(status)) {
- object_name[2] = 'L';
- status = bm_evaluate_reference_list(
- thermal_zone->acpi_handle,
- object_name,
- &(threshold->cooling_devices));
- }
- }
- break;
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_CRT", &value);
+ if (ACPI_FAILURE(status)) {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "No critical threshold\n"));
+ return_ACPI_STATUS(status);
+ }
+ else {
+ thresholds->critical.temperature = value;
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found critical threshold [%d]\n", thresholds->critical.temperature));
- default:
- status = AE_SUPPORT;
- break;
}
- return_ACPI_STATUS(status);
-}
+ /* Critical Sleep (optional) */
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_HOT", &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->hot.is_valid = 0;
+ thresholds->hot.temperature = 0;
+ }
+ else {
+ thresholds->hot.is_valid = 1;
+ thresholds->hot.temperature = value;
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found hot threshold [%d]\n", thresholds->hot.temperature));
+ }
-/****************************************************************************
- *
- * FUNCTION: tz_get_thresholds
- *
- * PARAMETERS: thermal_zone - Identifies the thermal zone to parse.
- * buffer - Output buffer.
- *
- * RETURN: acpi_status result code.
- *
- * DESCRIPTION: Builds a TZ_THRESHOLD_LIST structure containing information
- * on all thresholds for a given thermal zone.
- *
- * NOTES: The current design limits the number of cooling devices
- * per theshold to the value specified by BM_MAX_HANDLES.
- * This simplifies parsing of thresholds by allowing a maximum
- * threshold list size to be computed (and enforced) -- which
- * allows all thresholds to be parsed in a single pass (since
- * memory must be contiguous when returned in the acpi_buffer).
- *
- ****************************************************************************/
+ /* Passive: Processors (optional) */
-acpi_status
-tz_get_thresholds (
- TZ_CONTEXT *thermal_zone,
- TZ_THRESHOLD_LIST *threshold_list)
-{
- acpi_status status = AE_OK;
- TZ_THRESHOLD *threshold = NULL;
- u32 i = 0;
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_PSV", &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->passive.is_valid = 0;
+ thresholds->passive.temperature = 0;
+ }
+ else {
+ thresholds->passive.is_valid = 1;
+ thresholds->passive.temperature = value;
- FUNCTION_TRACE("tz_get_thresholds");
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_TC1", &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->passive.is_valid = 0;
+ }
+ thresholds->passive.tc1 = value;
- if (!thermal_zone || !threshold_list) {
- return_ACPI_STATUS(AE_BAD_PARAMETER);
- }
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_TC2", &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->passive.is_valid = 0;
+ }
+ thresholds->passive.tc2 = value;
- threshold_list->count = 0;
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_TSP", &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->passive.is_valid = 0;
+ }
+ thresholds->passive.tsp = value;
- /*
- * Critical threshold:
- * -------------------
- * Every thermal zone must have one!
- */
- threshold = &(threshold_list->thresholds[threshold_list->count]);
- threshold->type = TZ_THRESHOLD_CRITICAL;
+ status = bm_evaluate_reference_list(tz->acpi_handle, "_PSL", &(thresholds->passive.devices));
+ if (ACPI_FAILURE(status)) {
+ thresholds->passive.is_valid = 0;
+ }
- status = tz_get_single_threshold(thermal_zone, threshold);
- if (ACPI_SUCCESS(status)) {
- (threshold_list->count)++;
- }
- else {
- return_ACPI_STATUS(status);
+ if (thresholds->passive.is_valid) {
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found passive threshold [%d]\n", thresholds->passive.temperature));
+ }
+ else {
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid passive threshold\n"));
+ }
}
+ /* Active: Fans, etc. (optional) */
- /*
- * Passive threshold:
- * ------------------
- */
- threshold = &(threshold_list->thresholds[threshold_list->count]);
- threshold->type = TZ_THRESHOLD_PASSIVE;
+ for (i=0; icount)++;
- }
+ char name[5] = {'_','A','C',('0'+i),'\0'};
- /*
- * Active threshold:
- * -----------------
- * Note that active thresholds are sorted by index (e.g. _AC0,
- * _AC1, ...), and thus from highest (_AC0) to lowest (_AC9)
- * temperature.
- */
- for (i = 0; i < TZ_MAX_ACTIVE_THRESHOLDS; i++) {
+ status = bm_evaluate_simple_integer(tz->acpi_handle, name, &value);
+ if (ACPI_FAILURE(status)) {
+ thresholds->active[i].is_valid = 0;
+ thresholds->active[i].temperature = 0;
+ break;
+ }
- threshold = &(threshold_list->thresholds[threshold_list->count]);
- threshold->type = TZ_THRESHOLD_ACTIVE;
- threshold->index = i;
+ thresholds->active[i].temperature = value;
+ name[2] = 'L';
- status = tz_get_single_threshold(thermal_zone, threshold);
+ status = bm_evaluate_reference_list(tz->acpi_handle, name, &(thresholds->active[i].devices));
if (ACPI_SUCCESS(status)) {
- (threshold_list->count)++;
+ thresholds->active[i].is_valid = 1;
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found active threshold [%d]:[%d]\n", i, thresholds->active[i].temperature));
}
else {
- threshold->type = TZ_THRESHOLD_UNKNOWN;
- threshold->index = 0;
- thermal_zone->policy.active.threshold_count = i;
- break;
+ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid active threshold [%d]\n", i));
}
}
@@ -402,12 +323,6 @@
*
* FUNCTION: tz_add_device
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
@@ -416,7 +331,7 @@
void **context)
{
acpi_status status = AE_OK;
- TZ_CONTEXT *thermal_zone = NULL;
+ TZ_CONTEXT *tz = NULL;
BM_DEVICE *device = NULL;
acpi_handle tmp_handle = NULL;
static u32 zone_count = 0;
@@ -441,50 +356,67 @@
/*
* Allocate a new Thermal Zone device.
*/
- thermal_zone = acpi_os_callocate(sizeof(TZ_CONTEXT));
- if (!thermal_zone) {
- return AE_NO_MEMORY;
+ tz = acpi_os_callocate(sizeof(TZ_CONTEXT));
+ if (!tz) {
+ return_ACPI_STATUS(AE_NO_MEMORY);
}
- thermal_zone->device_handle = device->handle;
- thermal_zone->acpi_handle = device->acpi_handle;
+ tz->device_handle = device->handle;
+ tz->acpi_handle = device->acpi_handle;
/* TBD: How to manage 'uid' when zones are Pn_p? */
- sprintf(thermal_zone->uid, "%d", zone_count++);
+ sprintf(tz->uid, "%d", zone_count++);
/*
- * _TMP?
- * -----
+ * Temperature:
+ * ------------
+ * Make sure we can read the zone's current temperature (_TMP).
+ * If we can't, there's no use in doing any policy (abort).
*/
- status = acpi_get_handle(thermal_zone->acpi_handle, "_TMP",
- &tmp_handle);
- if (ACPI_FAILURE(status)) {
+ status = tz_get_temperature(tz);
+ if (ACPI_FAILURE(status))
goto end;
- }
/*
- * Initialize Policy:
+ * Polling Frequency:
* ------------------
- * TBD: Move all thermal zone policy to user-mode daemon...
+ * If _TZP doesn't exist use the OS default polling frequency.
*/
- status = tz_policy_add_device(thermal_zone);
+ status = bm_evaluate_simple_integer(tz->acpi_handle, "_TZP", &(tz->policy.polling_freq));
if (ACPI_FAILURE(status)) {
- goto end;
+ tz->policy.polling_freq = TZP;
}
+ status = AE_OK;
- status = tz_osl_add_device(thermal_zone);
- if (ACPI_FAILURE(status)) {
+ /*
+ * Cooling Preference:
+ * -------------------
+ * Default to ACTIVE (noisy) cooling until policy decides otherwise.
+ * Note that _SCP is optional.
+ */
+ tz_set_cooling_preference(tz, TZ_COOLING_MODE_ACTIVE);
+
+ /*
+ * Start Policy:
+ * -------------
+ * Thermal policy is included in the kernel (this driver) because
+ * of the critical role it plays in avoiding nuclear meltdown. =O
+ */
+ status = tz_policy_add_device(tz);
+ if (ACPI_FAILURE(status))
goto end;
- }
- *context = thermal_zone;
+ status = tz_osl_add_device(tz);
+ if (ACPI_FAILURE(status))
+ goto end;
- tz_print(thermal_zone);
+ *context = tz;
+
+ tz_print(tz);
end:
- if (ACPI_FAILURE(status)) {
- acpi_os_free(thermal_zone);
- }
+ if (ACPI_FAILURE(status))
+ acpi_os_free(tz);
return_ACPI_STATUS(status);
}
@@ -494,12 +426,6 @@
*
* FUNCTION: tz_remove_device
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
@@ -507,7 +433,7 @@
void **context)
{
acpi_status status = AE_OK;
- TZ_CONTEXT *thermal_zone = NULL;
+ TZ_CONTEXT *tz = NULL;
FUNCTION_TRACE("tz_remove_device");
@@ -515,23 +441,23 @@
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- thermal_zone = (TZ_CONTEXT*)(*context);
+ tz = (TZ_CONTEXT*)(*context);
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing thermal zone [%02x].\n", thermal_zone->device_handle));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing thermal zone [%02x].\n", tz->device_handle));
- status = tz_osl_remove_device(thermal_zone);
+ status = tz_osl_remove_device(tz);
/*
* Remove Policy:
* --------------
* TBD: Move all thermal zone policy to user-mode daemon...
*/
- status = tz_policy_remove_device(thermal_zone);
+ status = tz_policy_remove_device(tz);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
- acpi_os_free(thermal_zone);
+ acpi_os_free(tz);
return_ACPI_STATUS(status);
}
@@ -545,12 +471,6 @@
*
* FUNCTION: tz_initialize
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
@@ -562,8 +482,8 @@
FUNCTION_TRACE("tz_initialize");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Register driver for thermal zone devices.
@@ -583,12 +503,6 @@
*
* FUNCTION: tz_terminate
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
@@ -600,8 +514,8 @@
FUNCTION_TRACE("tz_terminate");
- MEMSET(&criteria, 0, sizeof(BM_DEVICE_ID));
- MEMSET(&driver, 0, sizeof(BM_DRIVER));
+ memset(&criteria, 0, sizeof(BM_DEVICE_ID));
+ memset(&driver, 0, sizeof(BM_DRIVER));
/*
* Unregister driver for thermal zone devices.
@@ -621,13 +535,8 @@
*
* FUNCTION: tz_notify
*
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION:
- *
****************************************************************************/
+
acpi_status
tz_notify (
BM_NOTIFY notify_type,
@@ -635,7 +544,7 @@
void **context)
{
acpi_status status = AE_OK;
- TZ_CONTEXT *thermal_zone = NULL;
+ TZ_CONTEXT *tz = NULL;
FUNCTION_TRACE("tz_notify");
@@ -643,7 +552,7 @@
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- thermal_zone = (TZ_CONTEXT*)*context;
+ tz = (TZ_CONTEXT*)*context;
switch (notify_type) {
@@ -657,40 +566,29 @@
case TZ_NOTIFY_TEMPERATURE_CHANGE:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Temperature (_TMP) change event detected.\n"));
- /* -------------------------------------------- */
- /* TBD: Remove when policy moves to user-mode. */
tz_policy_check(*context);
- /* -------------------------------------------- */
- status = tz_get_temperature(thermal_zone,
- &(thermal_zone->policy.temperature));
+ status = tz_get_temperature(tz);
if (ACPI_SUCCESS(status)) {
- status = tz_osl_generate_event(notify_type,
- thermal_zone);
+ status = tz_osl_generate_event(notify_type, tz);
}
break;
case TZ_NOTIFY_THRESHOLD_CHANGE:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Threshold (_SCP) change event detected.\n"));
- /* -------------------------------------------- */
- /* TBD: Remove when policy moves to user-mode. */
- status = tz_policy_remove_device(thermal_zone);
+ status = tz_policy_remove_device(tz);
if (ACPI_SUCCESS(status)) {
- status = tz_policy_add_device(thermal_zone);
+ status = tz_policy_add_device(tz);
}
- /* -------------------------------------------- */
- status = tz_osl_generate_event(notify_type, thermal_zone);
+ status = tz_osl_generate_event(notify_type, tz);
break;
case TZ_NOTIFY_DEVICE_LISTS_CHANGE:
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Device lists (_ALx, _PSL, _TZD) change event detected.\n"));
- /* -------------------------------------------- */
- /* TBD: Remove when policy moves to user-mode. */
- status = tz_policy_remove_device(thermal_zone);
+ status = tz_policy_remove_device(tz);
if (ACPI_SUCCESS(status)) {
- status = tz_policy_add_device(thermal_zone);
+ status = tz_policy_add_device(tz);
}
- /* -------------------------------------------- */
- status = tz_osl_generate_event(notify_type, thermal_zone);
+ status = tz_osl_generate_event(notify_type, tz);
break;
default:
@@ -706,12 +604,6 @@
*
* FUNCTION: tz_request
*
- * PARAMETERS:
- *
- * RETURN: Exception code.
- *
- * DESCRIPTION:
- *
****************************************************************************/
acpi_status
@@ -720,7 +612,7 @@
void *context)
{
acpi_status status = AE_OK;
- TZ_CONTEXT *thermal_zone = NULL;
+ TZ_CONTEXT *tz = NULL;
FUNCTION_TRACE("tz_request");
@@ -731,7 +623,7 @@
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- thermal_zone = (TZ_CONTEXT*)context;
+ tz = (TZ_CONTEXT*)context;
/*
* Handle request:
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/thermal/tz_osl.c linux/drivers/acpi/ospm/thermal/tz_osl.c
--- v2.4.13/linux/drivers/acpi/ospm/thermal/tz_osl.c Tue Oct 23 22:48:50 2001
+++ linux/drivers/acpi/ospm/thermal/tz_osl.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tz_osl.c
- * $Revision: 21 $
+ * $Revision: 25 $
*
*****************************************************************************/
@@ -35,7 +35,6 @@
MODULE_AUTHOR("Andrew Grover");
MODULE_DESCRIPTION("ACPI Component Architecture (CA) - Thermal Zone Driver");
-MODULE_LICENSE("GPL");
int TZP = 0;
MODULE_PARM(TZP, "i");
@@ -65,17 +64,64 @@
int *eof,
void *context)
{
- TZ_CONTEXT *thermal_zone = NULL;
+ acpi_status status = AE_OK;
+ char name[5];
+ acpi_buffer buffer = {sizeof(name), &name};
+ TZ_CONTEXT *tz = NULL;
+ TZ_THRESHOLDS *thresholds = NULL;
char *p = page;
int len = 0;
+ u32 i,j;
+ u32 t = 0;
- if (!context || (off != 0)) {
+ if (!context || (off != 0))
goto end;
+
+ tz = (TZ_CONTEXT*)context;
+
+ thresholds = &(tz->policy.thresholds);
+
+ p += sprintf(p, "critical (S5): trip=%d\n", thresholds->critical.temperature);
+
+ if (thresholds->hot.is_valid)
+ p += sprintf(p, "critical (S4): trip=%d\n", thresholds->hot.temperature);
+
+ if (thresholds->passive.is_valid) {
+ p += sprintf(p, "passive: trip=%d tc1=%d tc2=%d tsp=%d devices=", thresholds->passive.temperature, thresholds->passive.tc1, thresholds->passive.tc2, thresholds->passive.tsp);
+ for (j=0; jpassive.devices.count; j++)
+ p += sprintf(p, "%08x%c", thresholds->passive.devices.handles[j], (j==thresholds->passive.devices.count-1)?'\n':',');
}
- thermal_zone = (TZ_CONTEXT*)context;
+ for (i=0; iactive[i].is_valid))
+ break;
+ p += sprintf(p, "active[%d]: trip=%d devices=", i, thresholds->active[i].temperature);
+ for (j=0; jactive[i].devices.count; j++)
+ p += sprintf(p, "%08x%c", thresholds->active[i].devices.handles[j], (j==thresholds->passive.devices.count-1)?'\n':',');
+ }
- p += sprintf(p, "\n");
+ p += sprintf(p, "cooling mode: ");
+ switch (tz->policy.cooling_mode) {
+ case TZ_COOLING_MODE_ACTIVE:
+ p += sprintf(p, "active (noisy)\n");
+ break;
+ case TZ_COOLING_MODE_PASSIVE:
+ p += sprintf(p, "passive (quiet)\n");
+ break;
+ default:
+ p += sprintf(p, "unknown\n");
+ break;
+ }
+
+ p += sprintf(p, "polling: ");
+ switch (tz->policy.polling_freq) {
+ case 0:
+ p += sprintf(p, "disabled\n");
+ break;
+ default:
+ p += sprintf(p, "%d dS\n", tz->policy.polling_freq);
+ break;
+ }
end:
len = (p - page);
@@ -85,7 +131,49 @@
if (len>count) len = count;
if (len<0) len = 0;
- return(len);
+ return len;
+}
+
+
+/****************************************************************************
+ *
+ * FUNCTION: tz_osl_proc_write_info
+ *
+ ****************************************************************************/
+
+static int tz_osl_proc_write_info (
+ struct file *file,
+ const char *buffer,
+ unsigned long count,
+ void *data)
+{
+ TZ_CONTEXT *tz = NULL;
+ u32 state = 0;
+ u32 size = 0;
+
+ if (!buffer || (count==0) || !data) {
+ goto end;
+ }
+
+ tz = (TZ_CONTEXT*)data;
+
+ size = strlen(buffer);
+ if (size < 4)
+ goto end;
+
+ /* Cooling preference: "scp=0" (active) or "scp=1" (passive) */
+ if (0 == strncmp(buffer, "scp=", 4)) {
+ tz_set_cooling_preference(tz, (buffer[4] - '0'));
+ }
+
+ /* Polling frequency: "tzp=X" (poll every X [0-9] seconds) */
+ else if (0 == strncmp(buffer, "tzp=", 4)) {
+ tz->policy.polling_freq = (buffer[4] - '0') * 10;
+ tz_policy_check(tz);
+ }
+
+end:
+ return count;
}
@@ -104,7 +192,7 @@
int *eof,
void *context)
{
- TZ_CONTEXT *thermal_zone = NULL;
+ TZ_CONTEXT *tz = NULL;
char *p = page;
int len = 0;
@@ -112,47 +200,27 @@
goto end;
}
- thermal_zone = (TZ_CONTEXT*)context;
+ tz = (TZ_CONTEXT*)context;
- p += sprintf(p, "Temperature: %d (1/10th degrees Kelvin)\n",
- thermal_zone->policy.temperature);
+ /* Temperature */
- p += sprintf(p, "State: ");
- if (thermal_zone->policy.state & TZ_STATE_ACTIVE) {
- p += sprintf(p, "active[%d] ", thermal_zone->policy.state & 0x07);
- }
- if (thermal_zone->policy.state & TZ_STATE_PASSIVE) {
- p += sprintf(p, "passive ");
- }
- if (thermal_zone->policy.state & TZ_STATE_CRITICAL) {
- p += sprintf(p, "critical ");
- }
- if (thermal_zone->policy.state == 0) {
- p += sprintf(p, "ok ");
- }
- p += sprintf(p, "\n");
+ tz_get_temperature(tz);
- p += sprintf(p, "Cooling Mode: ");
- switch (thermal_zone->policy.cooling_mode) {
- case TZ_COOLING_MODE_ACTIVE:
- p += sprintf(p, "active (noisy)\n");
- break;
- case TZ_COOLING_MODE_PASSIVE:
- p += sprintf(p, "passive (quiet)\n");
- break;
- default:
- p += sprintf(p, "unknown\n");
- break;
- }
+ p += sprintf(p, "temperature: %d dK\n", tz->policy.temperature);
- p += sprintf(p, "Polling Frequency: ");
- switch (thermal_zone->policy.polling_freq) {
- case 0:
- p += sprintf(p, "n/a\n");
- break;
- default:
- p += sprintf(p, "%d (1/10th seconds)\n", thermal_zone->policy.polling_freq);
- break;
+ p += sprintf(p, "state: ");
+ if (tz->policy.state == 0)
+ p += sprintf(p, "ok\n");
+ else if (tz->policy.state & TZ_STATE_CRITICAL)
+ p += sprintf(p, "critical\n");
+ else if (tz->policy.state & TZ_STATE_HOT)
+ p += sprintf(p, "hot\n");
+ else {
+ if (tz->policy.state & TZ_STATE_ACTIVE)
+ p += sprintf(p, "active[%d] ", tz->policy.state & 0x07);
+ if (tz->policy.state & TZ_STATE_PASSIVE)
+ p += sprintf(p, "passive ");
+ p += sprintf(p, "\n");
}
end:
@@ -175,30 +243,33 @@
acpi_status
tz_osl_add_device(
- TZ_CONTEXT *thermal_zone)
+ TZ_CONTEXT *tz)
{
- struct proc_dir_entry *proc_entry = NULL, *proc;
+ struct proc_dir_entry *proc_entry = NULL;
+ struct proc_dir_entry *proc_child_entry = NULL;
- if (!thermal_zone) {
+ if (!tz) {
return(AE_BAD_PARAMETER);
}
- printk("Thermal Zone: found\n");
+ printk("ACPI: Thermal Zone found\n");
- proc_entry = proc_mkdir(thermal_zone->uid, tz_proc_root);
- if (!proc_entry)
+ proc_entry = proc_mkdir(tz->uid, tz_proc_root);
+ if (!proc_entry)
return(AE_ERROR);
- proc = create_proc_read_entry(TZ_PROC_STATUS, S_IFREG | S_IRUGO,
- proc_entry, tz_osl_proc_read_status, (void*)thermal_zone);
- if (!proc)
+ proc_child_entry = create_proc_read_entry(TZ_PROC_STATUS, S_IFREG | S_IRUGO, proc_entry, tz_osl_proc_read_status, (void*)tz);
+ if (!proc_child_entry)
return(AE_ERROR);
- proc = create_proc_read_entry(TZ_PROC_INFO, S_IFREG | S_IRUGO,
- proc_entry, tz_osl_proc_read_info, (void*)thermal_zone);
- if (!proc)
+ proc_child_entry = create_proc_entry(TZ_PROC_INFO, S_IFREG | 0644, proc_entry);
+ if (!proc_child_entry)
return(AE_ERROR);
+ proc_child_entry->read_proc = tz_osl_proc_read_info;
+ proc_child_entry->write_proc = tz_osl_proc_write_info;
+ proc_child_entry->data = (void*)tz;
+
return(AE_OK);
}
@@ -211,21 +282,21 @@
acpi_status
tz_osl_remove_device (
- TZ_CONTEXT *thermal_zone)
+ TZ_CONTEXT *tz)
{
char proc_entry[64];
- if (!thermal_zone) {
+ if (!tz) {
return(AE_BAD_PARAMETER);
}
- sprintf(proc_entry, "%s/%s", thermal_zone->uid, TZ_PROC_INFO);
+ sprintf(proc_entry, "%s/%s", tz->uid, TZ_PROC_INFO);
remove_proc_entry(proc_entry, tz_proc_root);
- sprintf(proc_entry, "%s/%s", thermal_zone->uid, TZ_PROC_STATUS);
+ sprintf(proc_entry, "%s/%s", tz->uid, TZ_PROC_STATUS);
remove_proc_entry(proc_entry, tz_proc_root);
- sprintf(proc_entry, "%s", thermal_zone->uid);
+ sprintf(proc_entry, "%s", tz->uid);
remove_proc_entry(proc_entry, tz_proc_root);
return(AE_OK);
@@ -241,26 +312,26 @@
acpi_status
tz_osl_generate_event (
u32 event,
- TZ_CONTEXT *thermal_zone)
+ TZ_CONTEXT *tz)
{
acpi_status status = AE_OK;
- if (!thermal_zone) {
+ if (!tz) {
return(AE_BAD_PARAMETER);
}
switch (event) {
case TZ_NOTIFY_TEMPERATURE_CHANGE:
- status = bm_osl_generate_event(thermal_zone->device_handle,
- TZ_PROC_ROOT, thermal_zone->uid, event,
- thermal_zone->policy.temperature);
+ status = bm_osl_generate_event(tz->device_handle,
+ TZ_PROC_ROOT, tz->uid, event,
+ tz->policy.temperature);
break;
case TZ_NOTIFY_THRESHOLD_CHANGE:
case TZ_NOTIFY_DEVICE_LISTS_CHANGE:
- status = bm_osl_generate_event(thermal_zone->device_handle,
- TZ_PROC_ROOT, thermal_zone->uid, event, 0);
+ status = bm_osl_generate_event(tz->device_handle,
+ TZ_PROC_ROOT, tz->uid, event, 0);
break;
default:
@@ -276,12 +347,6 @@
*
* FUNCTION: tz_osl_init
*
- * PARAMETERS:
- *
- * RETURN: 0: Success
- *
- * DESCRIPTION: Module initialization.
- *
****************************************************************************/
static int __init
@@ -312,12 +377,6 @@
/****************************************************************************
*
* FUNCTION: tz_osl_cleanup
- *
- * PARAMETERS:
- *
- * RETURN:
- *
- * DESCRIPTION: Module cleanup.
*
****************************************************************************/
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/ospm/thermal/tzpolicy.c linux/drivers/acpi/ospm/thermal/tzpolicy.c
--- v2.4.13/linux/drivers/acpi/ospm/thermal/tzpolicy.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/ospm/thermal/tzpolicy.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/****************************************************************************
*
* Module Name: tzpolicy.c -
- * $Revision: 28 $
+ * $Revision: 30 $
*
****************************************************************************/
@@ -24,13 +24,10 @@
*/
/*
- * TBD: 1. Move to user-space!
- * 2. Support ACPI 2.0 items (e.g. _TZD, _HOT).
- * 3. Support performance-limit control for non-processor devices
+ * TBD: 1. Support performance-limit control for non-processor devices
* (those listed in _TZD, e.g. graphics).
*/
-/* TBD: Linux specific */
#include
#include
#include
@@ -48,8 +45,6 @@
* Globals
****************************************************************************/
-extern int TZP;
-
void
tz_policy_run (
unsigned long data);
@@ -75,12 +70,10 @@
status = bm_request(&request);
- if (ACPI_FAILURE(status)) {
+ if (ACPI_FAILURE(status))
return status;
- }
- else {
+ else
return request.status;
- }
}
@@ -102,14 +95,44 @@
{
FUNCTION_TRACE("tz_policy_critical");
- if (!tz || !tz->policy.critical.threshold) {
+ if (!tz) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- if (tz->policy.temperature >=
- tz->policy.critical.threshold->temperature) {
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Critical threshold reached - shutting down system.\n"));
- /* TBD: Need method for calling 'halt' - OSL function? */
+ if (tz->policy.temperature >= tz->policy.thresholds.critical.temperature) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Critical (S5) threshold reached.\n"));
+ /* TBD: Need method for shutting down system. */
+ }
+
+ return_ACPI_STATUS(AE_OK);
+}
+
+
+/****************************************************************************
+ *
+ * FUNCTION: tz_policy_hot
+ *
+ * PARAMETERS:
+ *
+ * RETURN:
+ *
+ * DESCRIPTION:
+ *
+ ****************************************************************************/
+
+acpi_status
+tz_policy_hot(
+ TZ_CONTEXT *tz)
+{
+ FUNCTION_TRACE("tz_policy_hot");
+
+ if (!tz || !tz->policy.thresholds.hot.is_valid) {
+ return_ACPI_STATUS(AE_BAD_PARAMETER);
+ }
+
+ if (tz->policy.temperature >= tz->policy.thresholds.hot.temperature) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Critical (S4) threshold reached.\n"));
+ /* TBD: Need method for invoking OS-level critical suspend. */
}
return_ACPI_STATUS(AE_OK);
@@ -132,20 +155,20 @@
tz_policy_passive(
TZ_CONTEXT *tz)
{
- TZ_PASSIVE_POLICY *passive = NULL;
+ TZ_PASSIVE_THRESHOLD *passive = NULL;
static u32 last_temperature = 0;
s32 trend = 0;
u32 i = 0;
FUNCTION_TRACE("tz_policy_passive");
- if (!tz || !tz->policy.passive.threshold) {
+ if (!tz || !tz->policy.thresholds.passive.is_valid) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- passive = &(tz->policy.passive);
+ passive = &(tz->policy.thresholds.passive);
- if (tz->policy.temperature >= passive->threshold->temperature) {
+ if (tz->policy.temperature >= passive->temperature) {
/*
* Thermal trend?
* --------------
@@ -153,15 +176,8 @@
* Specification), calculate the current thermal trend
* (a.k.a. performance delta).
*/
- trend = passive->tc1 *
- (tz->policy.temperature - last_temperature) +
- passive->tc2 *
- (tz->policy.temperature - passive->threshold->temperature);
-
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "trend[%d] = TC1[%d]*(temp[%d]-last[%d]) + TC2[%d]*(temp[%d]-passive[%d])\n",
- trend, passive->tc1, tz->policy.temperature,
- last_temperature, passive->tc2, tz->policy.temperature,
- passive->threshold->temperature));
+ trend = passive->tc1 * (tz->policy.temperature - last_temperature) + passive->tc2 * (tz->policy.temperature - passive->temperature);
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "trend[%d] = TC1[%d]*(temp[%d]-last[%d]) + TC2[%d]*(temp[%d]-passive[%d])\n", trend, passive->tc1, tz->policy.temperature, last_temperature, passive->tc2, tz->policy.temperature, passive->temperature));
last_temperature = tz->policy.temperature;
@@ -172,11 +188,8 @@
* cooling devices (processors).
*/
if (trend > 0) {
- for (i=0; ithreshold->cooling_devices.count; i++) {
- set_performance_limit(
- passive->threshold->cooling_devices.handles[i],
- PR_PERF_DEC);
- }
+ for (i=0; idevices.count; i++)
+ set_performance_limit(passive->devices.handles[i], PR_PERF_DEC);
}
/*
* Cooling Off?
@@ -185,11 +198,8 @@
* cooling devices (processors).
*/
else if (trend < 0) {
- for (i=0; ithreshold->cooling_devices.count; i++) {
- set_performance_limit(
- passive->threshold->cooling_devices.handles[i],
- PR_PERF_INC);
- }
+ for (i=0; idevices.count; i++)
+ set_performance_limit(passive->devices.handles[i], PR_PERF_INC);
}
}
@@ -214,21 +224,20 @@
TZ_CONTEXT *tz)
{
acpi_status status = AE_OK;
- TZ_THRESHOLD *active = NULL;
+ TZ_ACTIVE_THRESHOLD *active = NULL;
u32 i,j = 0;
FUNCTION_TRACE("tz_policy_active");
- if (!tz || !tz->policy.active.threshold) {
+ if (!tz || !tz->policy.thresholds.active[0].is_valid) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
- for (i = 0; i < TZ_MAX_ACTIVE_THRESHOLDS; i++) {
+ for (i=0; ipolicy.active.threshold[i];
- if (!active) {
+ active = &(tz->policy.thresholds.active[i]);
+ if (!active || !active->is_valid)
break;
- }
/*
* Above Threshold?
@@ -236,24 +245,17 @@
* If not already enabled, turn ON all cooling devices
* associated with this active threshold.
*/
- if ((tz->policy.temperature >= active->temperature) &&
- (active->cooling_state != TZ_COOLING_ENABLED)) {
-
- for (j = 0; j < active->cooling_devices.count; j++) {
-
- status = bm_set_device_power_state(
- active->cooling_devices.handles[j],
- ACPI_STATE_D0);
-
+ if ((tz->policy.temperature >= active->temperature) && (active->cooling_state != TZ_COOLING_ENABLED)) {
+ for (j = 0; j < active->devices.count; j++) {
+ status = bm_set_device_power_state(active->devices.handles[j], ACPI_STATE_D0);
if (ACPI_SUCCESS(status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Cooling device [%02x] now ON.\n", active->cooling_devices.handles[j]));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Cooling device [%02x] now ON.\n", active->devices.handles[j]));
}
else {
- ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Unable to turn ON cooling device [%02x].\n", active->cooling_devices.handles[j]));
+ ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Unable to turn ON cooling device [%02x].\n", active->devices.handles[j]));
}
}
-
- active->cooling_state = TZ_COOLING_ENABLED;
+ active->cooling_state = TZ_COOLING_ENABLED;
}
/*
* Below Threshold?
@@ -265,21 +267,15 @@
* during the first pass.
*/
else if (active->cooling_state != TZ_COOLING_DISABLED) {
-
- for (j = 0; j < active->cooling_devices.count; j++) {
-
- status = bm_set_device_power_state(
- active->cooling_devices.handles[j],
- ACPI_STATE_D3);
-
+ for (j = 0; j < active->devices.count; j++) {
+ status = bm_set_device_power_state(active->devices.handles[j], ACPI_STATE_D3);
if (ACPI_SUCCESS(status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Cooling device [%02x] now OFF.\n", active->cooling_devices.handles[j]));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Cooling device [%02x] now OFF.\n", active->devices.handles[j]));
}
else {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Unable to turn OFF cooling device [%02x].\n", active->cooling_devices.handles[j]));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Unable to turn OFF cooling device [%02x].\n", active->devices.handles[j]));
}
}
-
active->cooling_state = TZ_COOLING_DISABLED;
}
}
@@ -308,6 +304,8 @@
{
acpi_status status = AE_OK;
TZ_CONTEXT *tz = NULL;
+ TZ_POLICY *policy = NULL;
+ TZ_THRESHOLDS *thresholds = NULL;
u32 previous_temperature = 0;
u32 previous_state = 0;
u32 active_index = 0;
@@ -322,6 +320,8 @@
}
tz = (TZ_CONTEXT*)context;
+ policy = &(tz->policy);
+ thresholds = &(tz->policy.thresholds);
/*
* Preserve Previous State:
@@ -334,7 +334,7 @@
* Get Temperature:
* ----------------
*/
- status = tz_get_temperature(tz, &(tz->policy.temperature));
+ status = tz_get_temperature(tz);
if (ACPI_FAILURE(status)) {
return_VOID;
}
@@ -343,32 +343,30 @@
* Calculate State:
* ----------------
*/
- tz->policy.state = TZ_STATE_OK;
+ policy->state = TZ_STATE_OK;
/* Critical? */
- if ((tz->policy.critical.threshold) &&
- (tz->policy.temperature >= tz->policy.critical.threshold->temperature)) {
- tz->policy.state |= TZ_STATE_CRITICAL;
- }
+ if (policy->temperature >= thresholds->critical.temperature)
+ policy->state |= TZ_STATE_CRITICAL;
+
+ /* Hot? */
+ if ((thresholds->hot.is_valid) && (policy->temperature >= thresholds->hot.temperature))
+ policy->state |= TZ_STATE_CRITICAL;
/* Passive? */
- if ((tz->policy.passive.threshold) &&
- (tz->policy.temperature >= tz->policy.passive.threshold->temperature)) {
- tz->policy.state |= TZ_STATE_PASSIVE;
- }
+ if ((thresholds->passive.is_valid) && (policy->temperature >= thresholds->passive.temperature))
+ policy->state |= TZ_STATE_PASSIVE;
/* Active? */
- if (tz->policy.active.threshold[0]) {
- for (i=0; ipolicy.active.threshold_count; i++) {
- if ((tz->policy.active.threshold[i]) &&
- (tz->policy.temperature >= tz->policy.active.threshold[i]->temperature)) {
- tz->policy.state |= TZ_STATE_ACTIVE;
- if (tz->policy.active.threshold[i]->index > active_index) {
- active_index = tz->policy.active.threshold[i]->index;
- }
+ if (thresholds->active[0].is_valid) {
+ for (i=0; iactive[i].is_valid) && (policy->temperature >= thresholds->active[i].temperature)) {
+ policy->state |= TZ_STATE_ACTIVE;
+ if (i > active_index)
+ active_index = i;
}
}
- tz->policy.state |= active_index;
+ policy->state |= active_index;
}
/*
@@ -379,17 +377,14 @@
* out of' a policy state (e.g. to allow fans to be turned off);
* thus we must preserve the previous state.
*/
- if (tz->policy.state & TZ_STATE_CRITICAL) {
+ if (policy->state & TZ_STATE_CRITICAL)
tz_policy_critical(tz);
- }
- if ((tz->policy.state & TZ_STATE_PASSIVE) ||
- (previous_state & TZ_STATE_PASSIVE)) {
+ if (policy->state & TZ_STATE_HOT)
+ tz_policy_hot(tz);
+ if ((policy->state & TZ_STATE_PASSIVE) || (previous_state & TZ_STATE_PASSIVE))
tz_policy_passive(tz);
- }
- if ((tz->policy.state & TZ_STATE_ACTIVE) ||
- (previous_state & TZ_STATE_ACTIVE)) {
+ if ((policy->state & TZ_STATE_ACTIVE) || (previous_state & TZ_STATE_ACTIVE))
tz_policy_active(tz);
- }
/*
* Calculate Sleep Time:
@@ -400,42 +395,33 @@
* a thermal event occurs -- e.g. never poll). Note that _TSP
* and _TZD values are given in 1/10th seconds.
*/
- if (tz->policy.state & TZ_STATE_PASSIVE) {
- sleep_time = tz->policy.passive.tsp * 100;
- }
- else if (tz->policy.polling_freq > 0) {
- sleep_time = tz->policy.polling_freq * 100;
- }
- else {
+ if (policy->state & TZ_STATE_PASSIVE)
+ sleep_time = thresholds->passive.tsp * 100;
+ else if (policy->polling_freq > 0)
+ sleep_time = policy->polling_freq * 100;
+ else
sleep_time = WAIT_FOREVER;
- }
-#ifdef ACPI_DEBUG
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Thermal_zone[%02x]: temperature[%d] state[%08x]\n", tz->device_handle, tz->policy.temperature, tz->policy.state));
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Thermal_zone[%02x]: temperature[%d] state[%08x]\n", tz->device_handle, policy->temperature, policy->state));
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Scheduling next poll in [%d]ms.\n", sleep_time));
-#endif /*ACPI_DEBUG*/
/*
* Schedule Next Poll:
* -------------------
*/
if (sleep_time < WAIT_FOREVER) {
- if (timer_pending(&(tz->policy.timer))) {
- mod_timer(&(tz->policy.timer),
- (HZ*sleep_time)/1000);
- }
+ if (timer_pending(&(policy->timer)))
+ mod_timer(&(policy->timer), (HZ*sleep_time)/1000);
else {
- tz->policy.timer.data = (u32)tz;
- tz->policy.timer.function = tz_policy_run;
- tz->policy.timer.expires =
- jiffies + (HZ*sleep_time)/1000;
- add_timer(&(tz->policy.timer));
+ policy->timer.data = (u32)tz;
+ policy->timer.function = tz_policy_run;
+ policy->timer.expires = jiffies + (HZ*sleep_time)/1000;
+ add_timer(&(policy->timer));
}
}
else {
- if (timer_pending(&(tz->policy.timer))) {
- del_timer(&(tz->policy.timer));
- }
+ if (timer_pending(&(policy->timer)))
+ del_timer(&(policy->timer));
}
return_VOID;
@@ -454,6 +440,7 @@
*
****************************************************************************/
+
void
tz_policy_run (
unsigned long data)
@@ -472,8 +459,7 @@
* -----------------------------
* Note that all Linux kernel timers run at interrupt-level (ack!).
*/
- status = acpi_os_queue_for_execution(OSD_PRIORITY_GPE,
- tz_policy_check, (void*)data);
+ status = acpi_os_queue_for_execution(OSD_PRIORITY_GPE, tz_policy_check, (void*)data);
if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Error invoking thermal policy.\n"));
}
@@ -499,7 +485,7 @@
TZ_CONTEXT *tz)
{
acpi_status status = AE_OK;
- TZ_THRESHOLD *threshold = NULL;
+ TZ_THRESHOLDS *thresholds = NULL;
u32 i,j = 0;
FUNCTION_TRACE("tz_policy_add_device");
@@ -511,36 +497,10 @@
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Adding policy for thermal zone [%02x].\n", tz->device_handle));
/*
- * Temperature:
- * ------------
- * Make sure we can read the zone's current temperature (_TMP).
- * If we can't, there's no use in doing any policy (abort).
- */
- status = tz_get_temperature(tz, &(tz->policy.temperature));
- if (ACPI_FAILURE(status)) {
- return_ACPI_STATUS(status);
- }
-
- /*
- * Polling Frequency:
- * ------------------
- * If a _TZP object doesn't exist, use the OS default polling
- * frequency.
- */
- status = bm_evaluate_simple_integer(tz->acpi_handle, "_TZP",
- &(tz->policy.polling_freq));
- if (ACPI_FAILURE(status)) {
- tz->policy.polling_freq = TZP;
- }
- status = AE_OK;
-
- /*
* Get Thresholds:
* ---------------
- * Get all of the zone's thresholds, parse, and organize for
- * later use.
*/
- status = tz_get_thresholds(tz, &(tz->policy.threshold_list));
+ status = tz_get_thresholds(tz);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
@@ -549,70 +509,17 @@
* Initialize Policies:
* --------------------
*/
- for (i = 0; i < tz->policy.threshold_list.count; i++) {
-
- threshold = &(tz->policy.threshold_list.thresholds[i]);
-
- switch (threshold->type) {
-
- case TZ_THRESHOLD_CRITICAL:
- tz->policy.critical.threshold = threshold;
- break;
-
- case TZ_THRESHOLD_PASSIVE:
-
- /*
- * Set thermal performance limit on all processors
- * to max.
- */
- for (j=0; jcooling_devices.count; j++) {
- set_performance_limit(
- threshold->cooling_devices.handles[j],
- PR_PERF_MAX);
- }
-
- /*
- * Get passive cooling constants.
- */
- status = bm_evaluate_simple_integer(tz->acpi_handle,
- "_TC1", &(tz->policy.passive.tc1));
- if (ACPI_FAILURE(status)) {
- break;
- }
-
- status = bm_evaluate_simple_integer(tz->acpi_handle,
- "_TC2", &(tz->policy.passive.tc2));
- if (ACPI_FAILURE(status)) {
- break;
- }
-
- status = bm_evaluate_simple_integer(tz->acpi_handle,
- "_TSP", &(tz->policy.passive.tsp));
- if (ACPI_FAILURE(status)) {
- break;
- }
-
- tz->policy.passive.threshold = threshold;
-
- tz_policy_passive(tz);
-
- break;
-
- case TZ_THRESHOLD_ACTIVE:
- tz->policy.active.threshold[threshold->index] = threshold;
- tz_policy_active(tz);
- break;
- }
- }
-
- if (ACPI_FAILURE(status)) {
- return_ACPI_STATUS(status);
+ if (tz->policy.thresholds.passive.is_valid) {
+ for (i=0; ipolicy.thresholds.passive.devices.count; i++)
+ set_performance_limit(tz->policy.thresholds.passive.devices.handles[i], PR_PERF_MAX);
+ tz_policy_passive(tz);
}
+ if (tz->policy.thresholds.active[0].is_valid)
+ tz_policy_active(tz);
/*
* Initialize Policy Timer:
* ------------------------
- * TBD: Linux-specific - remove when policy moves to user-space.
*/
init_timer(&(tz->policy.timer));
@@ -623,7 +530,7 @@
*/
tz_policy_check(tz);
- return_ACPI_STATUS(status);
+ return_ACPI_STATUS(AE_OK);
}
@@ -656,19 +563,15 @@
/*
* Delete the thermal zone policy timer entry, if exists.
*/
- if (timer_pending(&(tz->policy.timer))) {
+ if (timer_pending(&(tz->policy.timer)))
del_timer(&(tz->policy.timer));
- }
/*
* Reset thermal performance limit on all processors back to max.
*/
- if (tz->policy.passive.threshold) {
- for (i=0; ipolicy.passive.threshold->cooling_devices.count; i++) {
- set_performance_limit(
- tz->policy.passive.threshold->cooling_devices.handles[i],
- PR_PERF_MAX);
- }
+ if (tz->policy.thresholds.passive.is_valid) {
+ for (i=0; ipolicy.thresholds.passive.devices.count; i++)
+ set_performance_limit(tz->policy.thresholds.passive.devices.handles[i], PR_PERF_MAX);
}
return_ACPI_STATUS(AE_OK);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psargs.c linux/drivers/acpi/parser/psargs.c
--- v2.4.13/linux/drivers/acpi/parser/psargs.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psargs.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psargs - Parse AML opcode arguments
- * $Revision: 51 $
+ * $Revision: 52 $
*
*****************************************************************************/
@@ -391,11 +391,11 @@
name_op->node = method_node;
acpi_ps_append_arg (arg, name_op);
- if (!(acpi_operand_object *) method_node->object) {
+ if (!method_node->object) {
return_VOID;
}
- *arg_count = ((acpi_operand_object *) method_node->object)->method.param_count;
+ *arg_count = (method_node->object)->method.param_count;
}
return_VOID;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psopcode.c linux/drivers/acpi/parser/psopcode.c
--- v2.4.13/linux/drivers/acpi/parser/psopcode.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psopcode.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
- * Module Name: psopcode - Parser opcode information table
- * $Revision: 41 $
+ * Module Name: psopcode - Parser/Interpreter opcode information table
+ * $Revision: 49 $
*
*****************************************************************************/
@@ -67,28 +67,11 @@
* into a 32-bit number and stored in the master opcode table at the end of this file.
*/
-#define ARGP_ZERO_OP ARG_NONE
-#define ARGP_ONE_OP ARG_NONE
+
+#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA)
+#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME)
-#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ)
-#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)
-#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
-#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA)
-#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST)
-#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA)
-#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
-#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)
-#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
-#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
-#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST)
-#define ARGP_LOCAL0 ARG_NONE
-#define ARGP_LOCAL1 ARG_NONE
-#define ARGP_LOCAL2 ARG_NONE
-#define ARGP_LOCAL3 ARG_NONE
-#define ARGP_LOCAL4 ARG_NONE
-#define ARGP_LOCAL5 ARG_NONE
-#define ARGP_LOCAL6 ARG_NONE
-#define ARGP_LOCAL7 ARG_NONE
#define ARGP_ARG0 ARG_NONE
#define ARGP_ARG1 ARG_NONE
#define ARGP_ARG2 ARG_NONE
@@ -96,98 +79,116 @@
#define ARGP_ARG4 ARG_NONE
#define ARGP_ARG5 ARG_NONE
#define ARGP_ARG6 ARG_NONE
-#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME)
-#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET)
-#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST)
#define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG)
+#define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_BREAK_OP ARG_NONE
+#define ARGP_BREAK_POINT_OP ARG_NONE
+#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)
+#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)
+#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
-#define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
-#define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
-#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
+#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
+#define ARGP_CONTINUE_OP ARG_NONE
+#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME)
#define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
-#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
+#define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
+#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
#define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
+#define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
+#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_DEBUG_OP ARG_NONE
+#define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG)
+#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
+#define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET)
+#define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA)
+#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST)
+#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME)
+#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG)
+#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST)
+#define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
+#define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST)
+#define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
#define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG)
#define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
#define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
#define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME)
+#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG)
+#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME)
+#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_LOCAL0 ARG_NONE
+#define ARGP_LOCAL1 ARG_NONE
+#define ARGP_LOCAL2 ARG_NONE
+#define ARGP_LOCAL3 ARG_NONE
+#define ARGP_LOCAL4 ARG_NONE
+#define ARGP_LOCAL5 ARG_NONE
+#define ARGP_LOCAL6 ARG_NONE
+#define ARGP_LOCAL7 ARG_NONE
+#define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST)
+#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING)
#define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_CONTINUE_OP ARG_NONE
-#define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
-#define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST)
-#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
+#define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA)
+#define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ)
+#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING)
#define ARGP_NOOP_OP ARG_NONE
-#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
-#define ARGP_BREAK_OP ARG_NONE
-#define ARGP_BREAK_POINT_OP ARG_NONE
+#define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
+#define ARGP_ONE_OP ARG_NONE
#define ARGP_ONES_OP ARG_NONE
-#define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA)
-#define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME)
-#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
-#define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
-#define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME)
-#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG)
-#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG)
-#define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA)
-#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
-#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
-#define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME)
-#define ARGP_REVISION_OP ARG_NONE
-#define ARGP_DEBUG_OP ARG_NONE
-#define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG)
-#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST)
-#define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
-#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST)
+#define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
#define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST)
-#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
-#define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST)
-#define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST)
-#define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAMESTRING, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
-#define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING)
-#define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING)
-#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST)
+#define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA)
+#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
+#define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME)
#define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
-#define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
-#define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
+#define ARGP_REVISION_OP ARG_NONE
+#define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
+#define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG)
+#define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG)
#define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING)
+#define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME)
+#define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST)
+#define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
+#define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
+#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME)
+#define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
+#define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
+#define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
+#define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
+#define ARGP_ZERO_OP ARG_NONE
/*
@@ -197,28 +198,11 @@
* (Used by Prep_operands procedure and the ASL Compiler)
*/
-#define ARGI_ZERO_OP ARG_NONE
-#define ARGI_ONE_OP ARG_NONE
+
+#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE
+#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER)
+#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
#define ARGI_ALIAS_OP ARGI_INVALID_OPCODE
-#define ARGI_NAME_OP ARGI_INVALID_OPCODE
-#define ARGI_BYTE_OP ARGI_INVALID_OPCODE
-#define ARGI_WORD_OP ARGI_INVALID_OPCODE
-#define ARGI_DWORD_OP ARGI_INVALID_OPCODE
-#define ARGI_STRING_OP ARGI_INVALID_OPCODE
-#define ARGI_QWORD_OP ARGI_INVALID_OPCODE
-#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
-#define ARGI_BUFFER_OP ARGI_INVALID_OPCODE
-#define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE
-#define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE
-#define ARGI_METHOD_OP ARGI_INVALID_OPCODE
-#define ARGI_LOCAL0 ARG_NONE
-#define ARGI_LOCAL1 ARG_NONE
-#define ARGI_LOCAL2 ARG_NONE
-#define ARGI_LOCAL3 ARG_NONE
-#define ARGI_LOCAL4 ARG_NONE
-#define ARGI_LOCAL5 ARG_NONE
-#define ARGI_LOCAL6 ARG_NONE
-#define ARGI_LOCAL7 ARG_NONE
#define ARGI_ARG0 ARG_NONE
#define ARGI_ARG1 ARG_NONE
#define ARGI_ARG2 ARG_NONE
@@ -226,98 +210,116 @@
#define ARGI_ARG4 ARG_NONE
#define ARGI_ARG5 ARG_NONE
#define ARGI_ARG6 ARG_NONE
-#define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF)
-#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF)
-#define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
-#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
-#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
-#define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF)
-#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE
#define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
#define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
#define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
#define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE)
+#define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_BREAK_OP ARG_NONE
+#define ARGI_BREAK_POINT_OP ARG_NONE
+#define ARGI_BUFFER_OP ARGI_INVALID_OPCODE
+#define ARGI_BYTE_OP ARGI_INVALID_OPCODE
+#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE
+#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
-#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER)
-#define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT)
-#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
-#define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
-#define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
+#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
+#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
+#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
#define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
-#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE)
+#define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
+#define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
+#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE)
#define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
+#define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
+#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING)
+#define ARGI_DEBUG_OP ARG_NONE
+#define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
+#define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE)
+#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
+#define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF)
+#define ARGI_DWORD_OP ARGI_INVALID_OPCODE
+#define ARGI_ELSE_OP ARGI_INVALID_OPCODE
+#define ARGI_EVENT_OP ARGI_INVALID_OPCODE
+#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
+#define ARGI_FIELD_OP ARGI_INVALID_OPCODE
+#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_IF_OP ARGI_INVALID_OPCODE
+#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
+#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
+#define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF)
#define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER)
#define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
#define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
+#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE
#define ARGI_LLESS_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
-#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
-#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
-#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
-#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)
-#define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
+#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE
+#define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER)
+#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE
+#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF)
+#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF)
+#define ARGI_LOCAL0 ARG_NONE
+#define ARGI_LOCAL1 ARG_NONE
+#define ARGI_LOCAL2 ARG_NONE
+#define ARGI_LOCAL3 ARG_NONE
+#define ARGI_LOCAL4 ARG_NONE
+#define ARGI_LOCAL5 ARG_NONE
+#define ARGI_LOCAL6 ARG_NONE
+#define ARGI_LOCAL7 ARG_NONE
+#define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
+#define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
+#define ARGI_METHOD_OP ARGI_INVALID_OPCODE
+#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE
#define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFERSTRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
-#define ARGI_IF_OP ARGI_INVALID_OPCODE
-#define ARGI_ELSE_OP ARGI_INVALID_OPCODE
-#define ARGI_WHILE_OP ARGI_INVALID_OPCODE
+#define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE
+#define ARGI_NAME_OP ARGI_INVALID_OPCODE
+#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE
+#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE
#define ARGI_NOOP_OP ARG_NONE
-#define ARGI_RETURN_OP ARGI_INVALID_OPCODE
-#define ARGI_BREAK_OP ARG_NONE
-#define ARGI_BREAK_POINT_OP ARG_NONE
+#define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER)
+#define ARGI_ONE_OP ARG_NONE
#define ARGI_ONES_OP ARG_NONE
-#define ARGI_MUTEX_OP ARGI_INVALID_OPCODE
-#define ARGI_EVENT_OP ARGI_INVALID_OPCODE
-#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
-#define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE)
-#define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF)
-#define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF)
-#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER)
-#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER)
-#define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER)
-#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
-#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
-#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT)
-#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX)
-#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
-#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
-#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)
-#define ARGI_REVISION_OP ARG_NONE
-#define ARGI_DEBUG_OP ARG_NONE
-#define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
-#define ARGI_FIELD_OP ARGI_INVALID_OPCODE
-#define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
-#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
+#define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE
#define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE
-#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
-#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
-#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE
-#define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING)
-#define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE
-#define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE
-#define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE
-#define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE
-#define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE
-#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE
+#define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
+#define ARGI_QWORD_OP ARGI_INVALID_OPCODE
+#define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF)
+#define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
+#define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX)
#define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE
-#define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE
-#define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE
+#define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT)
+#define ARGI_RETURN_OP ARGI_INVALID_OPCODE
+#define ARGI_REVISION_OP ARG_NONE
+#define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
+#define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
+#define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT)
+#define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER)
+#define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER)
#define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE
+#define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF)
+#define ARGI_STRING_OP ARGI_INVALID_OPCODE
+#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
+#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
+#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
+#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
+#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
+#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
+#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
+#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)
+#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE)
+#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)
+#define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE
+#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
+#define ARGI_WHILE_OP ARGI_INVALID_OPCODE
+#define ARGI_WORD_OP ARGI_INVALID_OPCODE
+#define ARGI_ZERO_OP ARG_NONE
/*
@@ -447,143 +449,143 @@
static const acpi_opcode_info aml_op_info[] =
{
-/* Index Name Parser Args Interpreter Args Flags */
+/* Index Name Parser Args Interpreter Args Class Type Flags */
-/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS ),
-/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS ),
-/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 04 */ ACPI_OP ("Byte_const", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 05 */ ACPI_OP ("Word_const", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 06 */ ACPI_OP ("Dword_const", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS),
-/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS),
-/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED|AML_DEFER),
-/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_OP_TYPE_OPCODE | OPTYPE_LOCAL_VARIABLE| AML_NO_ARGS ),
-/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 1_a */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_ARGUMENT| AML_NO_ARGS ),
-/* 1_b */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 1_c */ ACPI_OP ("Ref_of", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 1_d */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 1_e */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 1_f */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 24 */ ACPI_OP ("Shift_left", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 25 */ ACPI_OP ("Shift_right", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 2_a */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 2_b */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 2_c */ ACPI_OP ("Find_set_left_bit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 2_d */ ACPI_OP ("Find_set_right_bit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 2_e */ ACPI_OP ("Deref_of", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 2_f */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC1| AML_HAS_ARGS),
-/* 30 */ ACPI_OP ("Size_of", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_TRIADIC| AML_HAS_ARGS),
-/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_HEXADIC| AML_HAS_ARGS),
-/* 33 */ ACPI_OP ("Create_dWord_field", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_CREATE),
-/* 34 */ ACPI_OP ("Create_word_field", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_CREATE),
-/* 35 */ ACPI_OP ("Create_byte_field", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_CREATE),
-/* 36 */ ACPI_OP ("Create_bit_field", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_CREATE),
-/* 37 */ ACPI_OP ("Object_type", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS),
-/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS),
-/* 3_a */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2| AML_HAS_ARGS),
-/* 3_b */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS),
-/* 3_c */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS),
-/* 3_d */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2| AML_HAS_ARGS),
-/* 3_e */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS),
-/* 3_f */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS),
-/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS),
-/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS ),
-/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_HAS_ARGS),
-/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS ),
-/* 44 */ ACPI_OP ("Break_point", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS ),
-/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS ),
+/* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 04 */ ACPI_OP ("Byte_const", ARGP_BYTE_OP, ARGI_BYTE_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 05 */ ACPI_OP ("Word_const", ARGP_WORD_OP, ARGI_WORD_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 06 */ ACPI_OP ("Dword_const", ARGP_DWORD_OP, ARGI_DWORD_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, AML_CLASS_ARGUMENT, AML_TYPE_DATA_TERM, AML_HAS_ARGS),
+/* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, AML_CLASS_ARGUMENT, AML_TYPE_DATA_TERM, AML_HAS_ARGS),
+/* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
+/* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
+/* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 1_a */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
+/* 1_b */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 1_c */ ACPI_OP ("Ref_of", ARGP_REF_OF_OP, ARGI_REF_OF_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 1_d */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 1_e */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
+/* 1_f */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R),
+/* 24 */ ACPI_OP ("Shift_left", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 25 */ ACPI_OP ("Shift_right", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 2_a */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH),
+/* 2_b */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 2_c */ ACPI_OP ("Find_set_left_bit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 2_d */ ACPI_OP ("Find_set_right_bit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 2_e */ ACPI_OP ("Deref_of", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 2_f */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),
+/* 30 */ ACPI_OP ("Size_of", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
+/* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
+/* 33 */ ACPI_OP ("Create_dWord_field", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 34 */ ACPI_OP ("Create_word_field", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 35 */ ACPI_OP ("Create_byte_field", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 36 */ ACPI_OP ("Create_bit_field", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 37 */ ACPI_OP ("Object_type", ARGP_TYPE_OP, ARGI_TYPE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL),
+/* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL),
+/* 3_a */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),
+/* 3_b */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL),
+/* 3_c */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL),
+/* 3_d */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL),
+/* 3_e */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 3_f */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
+/* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 44 */ ACPI_OP ("Break_point", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
/* Prefixed opcodes (Two-byte opcodes with a prefix op) */
-/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_NO_ARGS |AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED ),
-/* 48 */ ACPI_OP ("Cond_ref_of", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 49 */ ACPI_OP ("Create_field", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_FIELD|AML_CREATE),
-/* 4_a */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS),
-/* 4_b */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS),
-/* 4_c */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS),
-/* 4_d */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_s| AML_HAS_ARGS),
-/* 4_e */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS),
-/* 4_f */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_s| AML_HAS_ARGS),
-/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS),
-/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC1| AML_HAS_ARGS),
-/* 52 */ ACPI_OP ("From_bCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 53 */ ACPI_OP ("To_bCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_RECONFIGURATION| AML_HAS_ARGS),
-/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS ),
-/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONSTANT| AML_NO_ARGS ),
-/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_TRIADIC| AML_HAS_ARGS),
-/* 58 */ ACPI_OP ("Op_region", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED|AML_DEFER),
-/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_FIELD),
-/* 5_a */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 5_b */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 5_c */ ACPI_OP ("Power_resource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 5_d */ ACPI_OP ("Thermal_zone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED),
-/* 5_e */ ACPI_OP ("Index_field", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_FIELD),
-/* 5_f */ ACPI_OP ("Bank_field", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_NAMED_OBJECT| AML_HAS_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_FIELD),
+/* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
+/* 48 */ ACPI_OP ("Cond_ref_of", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 49 */ ACPI_OP ("Create_field", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE),
+/* 4_a */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R),
+/* 4_b */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4_c */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4_d */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
+/* 4_e */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 4_f */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),
+/* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 52 */ ACPI_OP ("From_bCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 53 */ ACPI_OP ("To_bCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),
+/* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
+/* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R),
+/* 58 */ ACPI_OP ("Op_region", ARGP_REGION_OP, ARGI_REGION_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER),
+/* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
+/* 5_a */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5_b */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5_c */ ACPI_OP ("Power_resource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5_d */ ACPI_OP ("Thermal_zone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),
+/* 5_e */ ACPI_OP ("Index_field", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
+/* 5_f */ ACPI_OP ("Bank_field", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD),
/* Internal opcodes that map to invalid AML opcodes */
-/* 60 */ ACPI_OP ("LNot_equal", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS),
-/* 61 */ ACPI_OP ("LLess_equal", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS),
-/* 62 */ ACPI_OP ("LGreater_equal", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_HAS_ARGS),
-/* 63 */ ACPI_OP ("[Name_path]", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS|AML_NSOBJECT|AML_NSNODE ),
-/* 64 */ ACPI_OP ("[Method_call]", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_METHOD_CALL| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE),
-/* 65 */ ACPI_OP ("[Byte_list]", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 66 */ ACPI_OP ("[Reserved_field]", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS ),
-/* 67 */ ACPI_OP ("[Named_field]", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS|AML_NSOBJECT|AML_NSOPCODE|AML_NSNODE|AML_NAMED ),
-/* 68 */ ACPI_OP ("[Access_field]", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS ),
-/* 69 */ ACPI_OP ("[Static_string", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_BOGUS| AML_NO_ARGS ),
-/* 6_a */ ACPI_OP ("[Return Value]", ARG_NONE, ARG_NONE, ACPI_OP_TYPE_OPCODE | OPTYPE_RETURN| AML_HAS_ARGS),
-/* 6_b */ ACPI_OP ("UNKNOWN_OP!", ARG_NONE, ARG_NONE, ACPI_OP_TYPE_UNKNOWN | OPTYPE_BOGUS| AML_HAS_ARGS),
-/* 6_c */ ACPI_OP ("ASCII_ONLY!", ARG_NONE, ARG_NONE, ACPI_OP_TYPE_ASCII | OPTYPE_BOGUS| AML_HAS_ARGS),
-/* 6_d */ ACPI_OP ("PREFIX_ONLY!", ARG_NONE, ARG_NONE, ACPI_OP_TYPE_PREFIX | OPTYPE_BOGUS| AML_HAS_ARGS),
-
-
-/* ACPI 2.0 (new) opcodes */
-
-/* 6_e */ ACPI_OP ("Qword_const", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_LITERAL| AML_NO_ARGS ),
-/* 6_f */ ACPI_OP ("Var_package", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DATA_TERM| AML_HAS_ARGS|AML_DEFER),
-/* 70 */ ACPI_OP ("Concat_res", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 72 */ ACPI_OP ("Create_qWord_field", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CREATE_FIELD| AML_HAS_ARGS|AML_NSOBJECT|AML_NSNODE|AML_DEFER|AML_CREATE),
-/* 73 */ ACPI_OP ("To_buffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 74 */ ACPI_OP ("To_decimal_string", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 75 */ ACPI_OP ("To_hex_string", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 76 */ ACPI_OP ("To_integer", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 77 */ ACPI_OP ("To_string", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_DYADIC2_r| AML_HAS_ARGS),
-/* 78 */ ACPI_OP ("Copy_object", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 7_a */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_CONTROL| AML_NO_ARGS ),
-/* 7_b */ ACPI_OP ("Load_table", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
-/* 7_c */ ACPI_OP ("Data_op_region", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_OP_TYPE_OPCODE | OPTYPE_MONADIC2_r| AML_HAS_ARGS),
+/* 60 */ ACPI_OP ("LNot_equal", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 61 */ ACPI_OP ("LLess_equal", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 62 */ ACPI_OP ("LGreater_equal", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 63 */ ACPI_OP ("[Name_path]", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ),
+/* 64 */ ACPI_OP ("[Method_call]", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),
+/* 65 */ ACPI_OP ("[Byte_list]", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 66 */ ACPI_OP ("[Reserved_field]", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 67 */ ACPI_OP ("[Named_field]", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
+/* 68 */ ACPI_OP ("[Access_field]", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 69 */ ACPI_OP ("[Static_string", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
+/* 6_a */ ACPI_OP ("[Return Value]", ARG_NONE, ARG_NONE, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL),
+/* 6_b */ ACPI_OP ("UNKNOWN_OP!", ARG_NONE, ARG_NONE, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 6_c */ ACPI_OP ("ASCII_ONLY!", ARG_NONE, ARG_NONE, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
+/* 6_d */ ACPI_OP ("PREFIX_ONLY!", ARG_NONE, ARG_NONE, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
+
+
+/* ACPI 2.0 opcodes */
+
+/* 6_e */ ACPI_OP ("Qword_const", ARGP_QWORD_OP, ARGI_QWORD_OP, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
+/* 6_f */ ACPI_OP ("Var_package", ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, AML_CLASS_ARGUMENT, AML_TYPE_DATA_TERM, AML_HAS_ARGS | AML_DEFER),
+/* 70 */ ACPI_OP ("Concat_res", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
+/* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
+/* 72 */ ACPI_OP ("Create_qWord_field", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
+/* 73 */ ACPI_OP ("To_buffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 74 */ ACPI_OP ("To_decimal_string", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 75 */ ACPI_OP ("To_hex_string", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 76 */ ACPI_OP ("To_integer", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 77 */ ACPI_OP ("To_string", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R),
+/* 78 */ ACPI_OP ("Copy_object", ARGP_COPY_OP, ARGI_COPY_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
+/* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R),
+/* 7_a */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
+/* 7_b */ ACPI_OP ("Load_table", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),
+/* 7_c */ ACPI_OP ("Data_op_region", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),
};
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psparse.c linux/drivers/acpi/parser/psparse.c
--- v2.4.13/linux/drivers/acpi/parser/psparse.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psparse.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psparse - Parser top level AML parse routines
- * $Revision: 96 $
+ * $Revision: 104 $
*
*****************************************************************************/
@@ -122,10 +122,8 @@
/* Extended opcode */
opcode = (u16) ((opcode << 8) | GET8 (aml));
- aml++;
}
- /* don't convert bare name to a namepath */
return (opcode);
}
@@ -133,45 +131,6 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ps_create_state
- *
- * PARAMETERS: Aml - Aml code pointer
- * Aml_size - Length of AML code
- *
- * RETURN: A new parser state object
- *
- * DESCRIPTION: Create and initialize a new parser state object
- *
- ******************************************************************************/
-
-acpi_parse_state *
-acpi_ps_create_state (
- u8 *aml,
- u32 aml_size)
-{
- acpi_parse_state *parser_state;
-
-
- FUNCTION_TRACE ("Ps_create_state");
-
-
- parser_state = ACPI_MEM_CALLOCATE (sizeof (acpi_parse_state));
- if (!parser_state) {
- return_PTR (NULL);
- }
-
- parser_state->aml = aml;
- parser_state->aml_end = aml + aml_size;
- parser_state->pkg_end = parser_state->aml_end;
- parser_state->aml_start = aml;
-
-
- return_PTR (parser_state);
-}
-
-
-/*******************************************************************************
- *
* FUNCTION: Acpi_ps_find_object
*
* PARAMETERS: Opcode - Current opcode
@@ -192,29 +151,25 @@
acpi_status
acpi_ps_find_object (
- u16 opcode,
- acpi_parse_object *op,
acpi_walk_state *walk_state,
acpi_parse_object **out_op)
{
NATIVE_CHAR *path;
- const acpi_opcode_info *op_info;
/* We are only interested in opcodes that have an associated name */
- op_info = acpi_ps_get_opcode_info (opcode);
- if (!(op_info->flags & AML_NAMED)) {
- *out_op = op;
+ if (!(walk_state->op_info->flags & AML_NAMED)) {
+ *out_op = walk_state->op;
return (AE_OK);
}
/* Find the name in the parse tree */
- path = acpi_ps_get_next_namestring (walk_state->parser_state);
+ path = acpi_ps_get_next_namestring (&walk_state->parser_state);
- *out_op = acpi_ps_find (acpi_ps_get_parent_scope (walk_state->parser_state),
- path, opcode, 1);
+ *out_op = acpi_ps_find (acpi_ps_get_parent_scope (&walk_state->parser_state),
+ path, walk_state->opcode, 1);
if (!(*out_op)) {
return (AE_NOT_FOUND);
@@ -247,28 +202,17 @@
#ifndef PARSER_ONLY
acpi_parse_object *prev;
acpi_parse_object *next;
- const acpi_opcode_info *op_info;
const acpi_opcode_info *parent_info;
- u32 opcode_class;
acpi_parse_object *replacement_op = NULL;
FUNCTION_TRACE_PTR ("Ps_complete_this_op", op);
- op_info = acpi_ps_get_opcode_info (op->opcode);
- opcode_class = ACPI_GET_OP_CLASS (op_info);
-
-
/* Delete this op and the subtree below it if asked to */
if (((walk_state->parse_flags & ACPI_PARSE_TREE_MASK) == ACPI_PARSE_DELETE_TREE) &&
- (opcode_class != OPTYPE_CONSTANT) &&
- (opcode_class != OPTYPE_LITERAL) &&
- (opcode_class != OPTYPE_LOCAL_VARIABLE) &&
- (opcode_class != OPTYPE_METHOD_ARGUMENT) &&
- (opcode_class != OPTYPE_DATA_TERM) &&
- (op->opcode != AML_INT_NAMEPATH_OP)) {
+ (walk_state->op_info->class != AML_CLASS_ARGUMENT)) {
/* Make sure that we only delete this subtree */
if (op->parent) {
@@ -278,11 +222,12 @@
*/
parent_info = acpi_ps_get_opcode_info (op->parent->opcode);
- switch (ACPI_GET_OP_CLASS (parent_info)) {
- case OPTYPE_CONTROL: /* IF, ELSE, WHILE only */
+ switch (parent_info->class) {
+ case AML_CLASS_CONTROL: /* IF, ELSE, WHILE only */
break;
- case OPTYPE_NAMED_OBJECT: /* Scope, method, etc. */
+ case AML_CLASS_NAMED_OBJECT: /* Scope, method, etc. */
+ case AML_CLASS_CREATE:
/*
* These opcodes contain Term_arg operands. The current
@@ -385,7 +330,7 @@
acpi_parse_object *op,
acpi_status callback_status)
{
- acpi_parse_state *parser_state = walk_state->parser_state;
+ acpi_parse_state *parser_state = &walk_state->parser_state;
acpi_status status = AE_CTRL_PENDING;
u8 *start;
u32 package_length;
@@ -500,13 +445,7 @@
{
acpi_status status = AE_OK;
acpi_parse_object *op = NULL; /* current op */
- const acpi_opcode_info *op_info;
acpi_parse_object *arg = NULL;
- acpi_parse2_object *deferred_op;
- u32 arg_count; /* push for fixed or var args */
- u32 arg_types = 0;
- u32 aml_offset;
- u16 opcode;
acpi_parse_object pre_op;
acpi_parse_state *parser_state;
u8 *aml_op_start;
@@ -515,7 +454,8 @@
FUNCTION_TRACE_PTR ("Ps_parse_loop", walk_state);
- parser_state = walk_state->parser_state;
+ parser_state = &walk_state->parser_state;
+ walk_state->arg_types = 0;
#ifndef PARSER_ONLY
if (walk_state->walk_type & WALK_METHOD_RESTART) {
@@ -527,7 +467,7 @@
* was just completed
*/
if ((parser_state->scope->parse_scope.op) &&
- ((parser_state->scope->parse_scope.op->opcode == AML_IF_OP) ||
+ ((parser_state->scope->parse_scope.op->opcode == AML_IF_OP) ||
(parser_state->scope->parse_scope.op->opcode == AML_WHILE_OP)) &&
(walk_state->control_state) &&
(walk_state->control_state->common.state ==
@@ -537,7 +477,8 @@
* A predicate was just completed, get the value of the
* predicate and branch based on that value
*/
- status = acpi_ds_get_predicate_value (walk_state, NULL, TRUE);
+ walk_state->op = NULL;
+ status = acpi_ds_get_predicate_value (walk_state, TRUE);
if (ACPI_FAILURE (status) &&
((status & AE_CODE_MASK) != AE_CODE_CONTROL)) {
if (status == AE_AML_NO_RETURN_VALUE) {
@@ -554,7 +495,7 @@
status = acpi_ps_next_parse_state (walk_state, op, status);
}
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", op));
}
@@ -562,7 +503,7 @@
/* We were in the middle of an op */
op = walk_state->prev_op;
- arg_types = walk_state->prev_arg_types;
+ walk_state->arg_types = walk_state->prev_arg_types;
}
}
#endif
@@ -575,8 +516,8 @@
/* Get the next opcode from the AML stream */
aml_op_start = parser_state->aml;
- aml_offset = parser_state->aml - parser_state->aml_start;
- opcode = acpi_ps_peek_opcode (parser_state);
+ walk_state->aml_offset = parser_state->aml - parser_state->aml_start;
+ walk_state->opcode = acpi_ps_peek_opcode (parser_state);
/*
* First cut to determine what we have found:
@@ -584,33 +525,25 @@
* 2) A name string
* 3) An unknown/invalid opcode
*/
- op_info = acpi_ps_get_opcode_info (opcode);
- switch (ACPI_GET_OP_TYPE (op_info)) {
- case ACPI_OP_TYPE_OPCODE:
-
- /* Found opcode info, this is a normal opcode */
-
- parser_state->aml += acpi_ps_get_opcode_size (opcode);
- arg_types = op_info->parse_args;
- break;
-
- case ACPI_OP_TYPE_ASCII:
- case ACPI_OP_TYPE_PREFIX:
+ walk_state->op_info = acpi_ps_get_opcode_info (walk_state->opcode);
+ switch (walk_state->op_info->class) {
+ case AML_CLASS_ASCII:
+ case AML_CLASS_PREFIX:
/*
* Starts with a valid prefix or ASCII char, this is a name
* string. Convert the bare name string to a namepath.
*/
- opcode = AML_INT_NAMEPATH_OP;
- arg_types = ARGP_NAMESTRING;
+ walk_state->opcode = AML_INT_NAMEPATH_OP;
+ walk_state->arg_types = ARGP_NAMESTRING;
break;
- case ACPI_OP_TYPE_UNKNOWN:
+ case AML_CLASS_UNKNOWN:
/* The opcode is unrecognized. Just skip unknown opcodes */
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "Found unknown opcode %lX at AML offset %X, ignoring\n",
- opcode, aml_offset));
+ "Found unknown opcode %X at AML offset %X, ignoring\n",
+ walk_state->opcode, walk_state->aml_offset));
DUMP_BUFFER (parser_state->aml, 128);
@@ -618,34 +551,54 @@
parser_state->aml++;
continue;
+
+ default:
+
+ /* Found opcode info, this is a normal opcode */
+
+ parser_state->aml += acpi_ps_get_opcode_size (walk_state->opcode);
+ walk_state->arg_types = walk_state->op_info->parse_args;
+ break;
+
}
/* Create Op structure and append to parent's argument list */
- if (op_info->flags & AML_NAMED) {
+ if (walk_state->op_info->flags & AML_NAMED) {
pre_op.value.arg = NULL;
- pre_op.opcode = opcode;
+ pre_op.opcode = walk_state->opcode;
- while (GET_CURRENT_ARG_TYPE (arg_types) != ARGP_NAME) {
+ while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) != ARGP_NAME) {
arg = acpi_ps_get_next_arg (parser_state,
- GET_CURRENT_ARG_TYPE (arg_types),
- &arg_count);
+ GET_CURRENT_ARG_TYPE (walk_state->arg_types),
+ &walk_state->arg_count);
acpi_ps_append_arg (&pre_op, arg);
- INCREMENT_ARG_LIST (arg_types);
+ INCREMENT_ARG_LIST (walk_state->arg_types);
}
/* We know that this arg is a name, move to next arg */
- INCREMENT_ARG_LIST (arg_types);
+ INCREMENT_ARG_LIST (walk_state->arg_types);
if (walk_state->descending_callback != NULL) {
/*
* Find the object. This will either insert the object into
* the namespace or simply look it up
*/
- status = walk_state->descending_callback (opcode, NULL, walk_state, &op);
+ walk_state->op = NULL;
+
+ status = walk_state->descending_callback (walk_state, &op);
+
+ /* TBD: check status here? */
+
+ if (ACPI_FAILURE (status)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "During name lookup/catalog, %s\n",
+ acpi_format_exception (status)));
+ goto close_this_op;
+ }
+
if (op == NULL) {
continue;
}
@@ -665,8 +618,6 @@
if (op->opcode == AML_REGION_OP) {
- deferred_op = (acpi_parse2_object *) op;
-
/*
* Defer final parsing of an Operation_region body,
* because we don't have enough info in the first pass
@@ -679,8 +630,8 @@
*
* (Length is unknown until parse of the body complete)
*/
- deferred_op->data = aml_op_start;
- deferred_op->length = 0;
+ ((acpi_parse2_object * ) op)->data = aml_op_start;
+ ((acpi_parse2_object * ) op)->length = 0;
}
}
@@ -688,22 +639,20 @@
else {
/* Not a named opcode, just allocate Op and append to parent */
- op_info = acpi_ps_get_opcode_info (opcode);
- op = acpi_ps_alloc_op (opcode);
+ walk_state->op_info = acpi_ps_get_opcode_info (walk_state->opcode);
+ op = acpi_ps_alloc_op (walk_state->opcode);
if (!op) {
return_ACPI_STATUS (AE_NO_MEMORY);
}
- if (op_info->flags & AML_CREATE) {
+ if (walk_state->op_info->flags & AML_CREATE) {
/*
* Backup to beginning of Create_xXXfield declaration
* Body_length is unknown until we parse the body
*/
- deferred_op = (acpi_parse2_object *) op;
-
- deferred_op->data = aml_op_start;
- deferred_op->length = 0;
+ ((acpi_parse2_object * ) op)->data = aml_op_start;
+ ((acpi_parse2_object * ) op)->length = 0;
}
acpi_ps_append_arg (acpi_ps_get_parent_scope (parser_state), op);
@@ -713,7 +662,9 @@
* Find the object. This will either insert the object into
* the namespace or simply look it up
*/
- status = walk_state->descending_callback (opcode, op, walk_state, &op);
+ walk_state->op = op;
+
+ status = walk_state->descending_callback (walk_state, &op);
status = acpi_ps_next_parse_state (walk_state, op, status);
if (status == AE_CTRL_PENDING) {
status = AE_OK;
@@ -726,11 +677,11 @@
}
}
- op->aml_offset = aml_offset;
+ op->aml_offset = walk_state->aml_offset;
- if (op_info) {
+ if (walk_state->op_info) {
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
- "Op=%p Opcode=%4.4lX Aml %p Oft=%5.5lX\n",
+ "Op=%p Opcode=%4.4X Aml %p Oft=%5.5X\n",
op, op->opcode, parser_state->aml, op->aml_offset));
}
}
@@ -738,10 +689,10 @@
/* Start Arg_count at zero because we don't know if there are any args yet */
- arg_count = 0;
+ walk_state->arg_count = 0;
- if (arg_types) /* Are there any arguments that must be processed? */ {
+ if (walk_state->arg_types) /* Are there any arguments that must be processed? */ {
/* get arguments */
switch (op->opcode) {
@@ -754,13 +705,13 @@
/* fill in constant or string argument directly */
acpi_ps_get_next_simple_arg (parser_state,
- GET_CURRENT_ARG_TYPE (arg_types), op);
+ GET_CURRENT_ARG_TYPE (walk_state->arg_types), op);
break;
case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */
- acpi_ps_get_next_namepath (parser_state, op, &arg_count, 1);
- arg_types = 0;
+ acpi_ps_get_next_namepath (parser_state, op, &walk_state->arg_count, 1);
+ walk_state->arg_types = 0;
break;
@@ -768,32 +719,30 @@
/* Op is not a constant or string, append each argument */
- while (GET_CURRENT_ARG_TYPE (arg_types) && !arg_count) {
- aml_offset = parser_state->aml - parser_state->aml_start;
+ while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) && !walk_state->arg_count) {
+ walk_state->aml_offset = parser_state->aml - parser_state->aml_start;
arg = acpi_ps_get_next_arg (parser_state,
- GET_CURRENT_ARG_TYPE (arg_types),
- &arg_count);
+ GET_CURRENT_ARG_TYPE (walk_state->arg_types),
+ &walk_state->arg_count);
if (arg) {
- arg->aml_offset = aml_offset;
+ arg->aml_offset = walk_state->aml_offset;
acpi_ps_append_arg (op, arg);
}
- INCREMENT_ARG_LIST (arg_types);
+ INCREMENT_ARG_LIST (walk_state->arg_types);
}
/* For a method, save the length and address of the body */
if (op->opcode == AML_METHOD_OP) {
- deferred_op = (acpi_parse2_object *) op;
-
/*
* Skip parsing of control method or opregion body,
* because we don't have enough info in the first pass
* to parse them correctly.
*/
- deferred_op->data = parser_state->aml;
- deferred_op->length = (u32) (parser_state->pkg_end -
+ ((acpi_parse2_object * ) op)->data = parser_state->aml;
+ ((acpi_parse2_object * ) op)->length = (u32) (parser_state->pkg_end -
parser_state->aml);
/*
@@ -802,7 +751,7 @@
* package (We don't know where the end is).
*/
parser_state->aml = parser_state->pkg_end;
- arg_count = 0;
+ walk_state->arg_count = 0;
}
break;
@@ -813,18 +762,16 @@
/*
* Zero Arg_count means that all arguments for this op have been processed
*/
- if (!arg_count) {
+ if (!walk_state->arg_count) {
/* completed Op, prepare for next */
- op_info = acpi_ps_get_opcode_info (op->opcode);
- if (op_info->flags & AML_NAMED) {
+ walk_state->op_info = acpi_ps_get_opcode_info (op->opcode);
+ if (walk_state->op_info->flags & AML_NAMED) {
if (acpi_gbl_depth) {
acpi_gbl_depth--;
}
if (op->opcode == AML_REGION_OP) {
- deferred_op = (acpi_parse2_object *) op;
-
/*
* Skip parsing of control method or opregion body,
* because we don't have enough info in the first pass
@@ -833,27 +780,29 @@
* Completed parsing an Op_region declaration, we now
* know the length.
*/
- deferred_op->length = (u32) (parser_state->aml -
- deferred_op->data);
+ ((acpi_parse2_object * ) op)->length = (u32) (parser_state->aml -
+ ((acpi_parse2_object * ) op)->data);
}
}
- if (op_info->flags & AML_CREATE) {
+ if (walk_state->op_info->flags & AML_CREATE) {
/*
* Backup to beginning of Create_xXXfield declaration (1 for
* Opcode)
*
* Body_length is unknown until we parse the body
*/
- deferred_op = (acpi_parse2_object *) op;
- deferred_op->length = (u32) (parser_state->aml -
- deferred_op->data);
+ ((acpi_parse2_object * ) op)->length = (u32) (parser_state->aml -
+ ((acpi_parse2_object * ) op)->data);
}
/* This op complete, notify the dispatcher */
if (walk_state->ascending_callback != NULL) {
- status = walk_state->ascending_callback (walk_state, op);
+ walk_state->op = op;
+ walk_state->opcode = op->opcode;
+
+ status = walk_state->ascending_callback (walk_state);
status = acpi_ps_next_parse_state (walk_state, op, status);
if (status == AE_CTRL_PENDING) {
status = AE_OK;
@@ -887,16 +836,20 @@
* We are about to transfer to a called method.
*/
walk_state->prev_op = op;
- walk_state->prev_arg_types = arg_types;
+ walk_state->prev_arg_types = walk_state->arg_types;
return_ACPI_STATUS (status);
break;
case AE_CTRL_END:
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
+
+ walk_state->op = op;
+ walk_state->op_info = acpi_ps_get_opcode_info (op->opcode);
+ walk_state->opcode = op->opcode;
- status = walk_state->ascending_callback (walk_state, op);
+ status = walk_state->ascending_callback (walk_state);
status = acpi_ps_next_parse_state (walk_state, op, status);
acpi_ps_complete_this_op (walk_state, op);
@@ -915,7 +868,7 @@
acpi_ps_complete_this_op (walk_state, op);
}
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
} while (op);
return_ACPI_STATUS (status);
@@ -925,10 +878,10 @@
default: /* All other non-AE_OK status */
if (op == NULL) {
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
}
walk_state->prev_op = op;
- walk_state->prev_arg_types = arg_types;
+ walk_state->prev_arg_types = walk_state->arg_types;
/*
* TEMP:
@@ -941,7 +894,7 @@
/* This scope complete? */
if (acpi_ps_has_completed_scope (parser_state)) {
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", op));
}
@@ -957,7 +910,7 @@
else {
/* complex argument, push Op and prepare for argument */
- acpi_ps_push_scope (parser_state, op, arg_types, arg_count);
+ acpi_ps_push_scope (parser_state, op, walk_state->arg_types, walk_state->arg_count);
op = NULL;
}
@@ -967,14 +920,18 @@
/*
* Complete the last Op (if not completed), and clear the scope stack.
* It is easily possible to end an AML "package" with an unbounded number
- * of open scopes (such as when several AML blocks are closed with
+ * of open scopes (such as when several ASL blocks are closed with
* sequential closing braces). We want to terminate each one cleanly.
*/
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Package complete at Op %p\n", op));
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "AML package complete at Op %p\n", op));
do {
if (op) {
if (walk_state->ascending_callback != NULL) {
- status = walk_state->ascending_callback (walk_state, op);
+ walk_state->op = op;
+ walk_state->op_info = acpi_ps_get_opcode_info (op->opcode);
+ walk_state->opcode = op->opcode;
+
+ status = walk_state->ascending_callback (walk_state);
status = acpi_ps_next_parse_state (walk_state, op, status);
if (status == AE_CTRL_PENDING) {
status = AE_OK;
@@ -990,7 +947,7 @@
acpi_ps_complete_this_op (walk_state, op);
}
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
} while (op);
@@ -1006,7 +963,7 @@
acpi_ps_complete_this_op (walk_state, op);
}
- acpi_ps_pop_scope (parser_state, &op, &arg_types, &arg_count);
+ acpi_ps_pop_scope (parser_state, &op, &walk_state->arg_types, &walk_state->arg_count);
} while (op);
@@ -1032,101 +989,34 @@
acpi_status
acpi_ps_parse_aml (
- acpi_parse_object *start_scope,
- u8 *aml,
- u32 aml_size,
- u32 parse_flags,
- acpi_namespace_node *method_node,
- acpi_operand_object **params,
- acpi_operand_object **caller_return_desc,
- acpi_parse_downwards descending_callback,
- acpi_parse_upwards ascending_callback)
+ acpi_walk_state *walk_state)
{
acpi_status status;
- acpi_parse_state *parser_state;
- acpi_walk_state *walk_state;
acpi_walk_list walk_list;
acpi_walk_list *prev_walk_list = acpi_gbl_current_walk_list;
- acpi_operand_object *return_desc;
- acpi_operand_object *mth_desc = NULL;
+ acpi_walk_state *previous_walk_state;
FUNCTION_TRACE ("Ps_parse_aml");
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Entered with Scope=%p Aml=%p size=%lX\n",
- start_scope, aml, aml_size));
-
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Entered with Walk_state=%p Aml=%p size=%X\n",
+ walk_state, walk_state->parser_state.aml, walk_state->parser_state.aml_size));
- /* Create and initialize a new parser state */
-
- parser_state = acpi_ps_create_state (aml, aml_size);
- if (!parser_state) {
- return_ACPI_STATUS (AE_NO_MEMORY);
- }
-
- acpi_ps_init_scope (parser_state, start_scope);
-
- if (method_node) {
- mth_desc = acpi_ns_get_attached_object (method_node);
- }
/* Create and initialize a new walk list */
- walk_list.walk_state = NULL;
+ walk_list.walk_state = NULL;
walk_list.acquired_mutex_list.prev = NULL;
walk_list.acquired_mutex_list.next = NULL;
- walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT, parser_state->start_op,
- mth_desc, &walk_list);
- if (!walk_state) {
- status = AE_NO_MEMORY;
- goto cleanup;
- }
+ walk_state->walk_list = &walk_list;
+ acpi_ds_push_walk_state (walk_state, &walk_list);
- walk_state->method_node = method_node;
- walk_state->parser_state = parser_state;
- walk_state->parse_flags = parse_flags;
- walk_state->descending_callback = descending_callback;
- walk_state->ascending_callback = ascending_callback;
/* TBD: [Restructure] TEMP until we pass Walk_state to the interpreter
*/
acpi_gbl_current_walk_list = &walk_list;
-
- if (method_node) {
- parser_state->start_node = method_node;
- walk_state->walk_type = WALK_METHOD;
-
- /* Push start scope on scope stack and make it current */
-
- status = acpi_ds_scope_stack_push (method_node, ACPI_TYPE_METHOD, walk_state);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
- /* Init arguments if this is a control method */
- /* TBD: [Restructure] add walkstate as a param */
-
- acpi_ds_method_data_init_args (params, MTH_NUM_ARGS, walk_state);
- }
-
- else {
- /* Setup the current scope */
-
- parser_state->start_node = parser_state->start_op->node;
- if (parser_state->start_node) {
- /* Push start scope on scope stack and make it current */
-
- status = acpi_ds_scope_stack_push (parser_state->start_node,
- parser_state->start_node->type, walk_state);
- if (ACPI_FAILURE (status)) {
- goto cleanup;
- }
-
- }
- }
-
/*
* Execute the walk loop as long as there is a valid Walk State. This
* handles nested control method invocations without recursion.
@@ -1136,6 +1026,10 @@
status = AE_OK;
while (walk_state) {
if (ACPI_SUCCESS (status)) {
+ /*
+ * The Parse_loop executes AML until the method terminates
+ * or calls another method.
+ */
status = acpi_ps_parse_loop (walk_state);
}
@@ -1165,13 +1059,6 @@
walk_state = acpi_ds_pop_walk_state (&walk_list);
- /* Extract return value before we delete Walk_state */
-
- return_desc = walk_state->return_desc;
-
- ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Return_value=%p, State=%p\n",
- walk_state->return_desc, walk_state));
-
/* Reset the current scope to the beginning of scope stack */
acpi_ds_scope_stack_clear (walk_state);
@@ -1186,38 +1073,44 @@
/* Delete this walk state and all linked control states */
- acpi_ps_cleanup_scope (walk_state->parser_state);
- ACPI_MEM_FREE (walk_state->parser_state);
- acpi_ds_delete_walk_state (walk_state);
+ acpi_ps_cleanup_scope (&walk_state->parser_state);
+
+ previous_walk_state = walk_state;
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Return_value=%p, State=%p\n",
+ walk_state->return_desc, walk_state));
/* Check if we have restarted a preempted walk */
walk_state = acpi_ds_get_current_walk_state (&walk_list);
- if (walk_state &&
- ACPI_SUCCESS (status)) {
- /* There is another walk state, restart it */
+ if (walk_state) {
+ if (ACPI_SUCCESS (status)) {
+ /* There is another walk state, restart it */
- /*
- * If the method returned value is not used by the parent,
- * The object is deleted
- */
- acpi_ds_restart_control_method (walk_state, return_desc);
- walk_state->walk_type |= WALK_METHOD_RESTART;
+ /*
+ * If the method returned value is not used by the parent,
+ * The object is deleted
+ */
+ acpi_ds_restart_control_method (walk_state, previous_walk_state->return_desc);
+ walk_state->walk_type |= WALK_METHOD_RESTART;
+ }
}
/*
* Just completed a 1st-level method, save the final internal return
* value (if any)
*/
- else if (caller_return_desc) {
- *caller_return_desc = return_desc; /* NULL if no return value */
+ else if (previous_walk_state->caller_return_desc) {
+ *(previous_walk_state->caller_return_desc) = previous_walk_state->return_desc; /* NULL if no return value */
}
- else if (return_desc) {
+ else if (previous_walk_state->return_desc) {
/* Caller doesn't want it, must delete it */
- acpi_ut_remove_reference (return_desc);
+ acpi_ut_remove_reference (previous_walk_state->return_desc);
}
+
+ acpi_ds_delete_walk_state (previous_walk_state);
}
@@ -1225,20 +1118,6 @@
acpi_ex_release_all_mutexes ((acpi_operand_object *) &walk_list.acquired_mutex_list);
acpi_gbl_current_walk_list = prev_walk_list;
- return_ACPI_STATUS (status);
-
-
-cleanup:
-
- /* Cleanup */
-
- acpi_ds_delete_walk_state (walk_state);
- acpi_ps_cleanup_scope (parser_state);
- ACPI_MEM_FREE (parser_state);
-
- acpi_ex_release_all_mutexes ((acpi_operand_object *)&walk_list.acquired_mutex_list);
- acpi_gbl_current_walk_list = prev_walk_list;
-
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psscope.c linux/drivers/acpi/parser/psscope.c
--- v2.4.13/linux/drivers/acpi/parser/psscope.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psscope.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psscope - Parser scope stack management routines
- * $Revision: 29 $
+ * $Revision: 30 $
*
*****************************************************************************/
@@ -103,6 +103,7 @@
return_ACPI_STATUS (AE_NO_MEMORY);
}
+ scope->common.data_type = ACPI_DESC_TYPE_STATE_RPSCOPE;
scope->parse_scope.op = root_op;
scope->parse_scope.arg_count = ACPI_VAR_ARGS;
scope->parse_scope.arg_end = parser_state->aml_end;
@@ -149,6 +150,7 @@
}
+ scope->common.data_type = ACPI_DESC_TYPE_STATE_PSCOPE;
scope->parse_scope.op = op;
scope->parse_scope.arg_list = remaining_args;
scope->parse_scope.arg_count = arg_count;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/pstree.c linux/drivers/acpi/parser/pstree.c
--- v2.4.13/linux/drivers/acpi/parser/pstree.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/pstree.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: pstree - Parser op tree manipulation/traversal/search
- * $Revision: 32 $
+ * $Revision: 35 $
*
*****************************************************************************/
@@ -60,7 +60,7 @@
/* Get the info structure for this opcode */
op_info = acpi_ps_get_opcode_info (op->opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
/* Invalid opcode or ASCII character */
return (NULL);
@@ -68,7 +68,7 @@
/* Check if this opcode requires argument sub-objects */
- if (!(ACPI_GET_OP_ARGS (op_info))) {
+ if (!(op_info->flags & AML_HAS_ARGS)) {
/* Has no linked argument objects */
return (NULL);
@@ -118,15 +118,16 @@
/* Get the info structure for this opcode */
op_info = acpi_ps_get_opcode_info (op->opcode);
- if (ACPI_GET_OP_TYPE (op_info) != ACPI_OP_TYPE_OPCODE) {
+ if (op_info->class == AML_CLASS_UNKNOWN) {
/* Invalid opcode */
+ REPORT_ERROR (("Ps_append_arg: Invalid AML Opcode: 0x%2.2X\n", op->opcode));
return;
}
/* Check if this opcode requires argument sub-objects */
- if (!(ACPI_GET_OP_ARGS (op_info))) {
+ if (!(op_info->flags & AML_HAS_ARGS)) {
/* Has no linked argument objects */
return;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psutils.c linux/drivers/acpi/parser/psutils.c
--- v2.4.13/linux/drivers/acpi/parser/psutils.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psutils - Parser miscellaneous utilities (Parser only)
- * $Revision: 43 $
+ * $Revision: 44 $
*
*****************************************************************************/
@@ -34,8 +34,8 @@
#define PARSEOP_GENERIC 0x01
#define PARSEOP_NAMED 0x02
-#define PARSEOP_DEFERRED 0x03
-#define PARSEOP_BYTELIST 0x04
+#define PARSEOP_DEFERRED 0x04
+#define PARSEOP_BYTELIST 0x08
#define PARSEOP_IN_CACHE 0x80
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/pswalk.c linux/drivers/acpi/parser/pswalk.c
--- v2.4.13/linux/drivers/acpi/parser/pswalk.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/pswalk.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: pswalk - Parser routines to walk parsed op tree(s)
- * $Revision: 56 $
+ * $Revision: 58 $
*
*****************************************************************************/
@@ -88,7 +88,11 @@
next = op->next;
parent = op->parent;
- status = ascending_callback (walk_state, op);
+ walk_state->op = op;
+ walk_state->op_info = acpi_ps_get_opcode_info (op->opcode);
+ walk_state->opcode = op->opcode;
+
+ status = ascending_callback (walk_state);
/*
* If we are back to the starting point, the walk is complete.
@@ -144,7 +148,11 @@
grand_parent = parent->parent;
next = parent->next;
- status = ascending_callback (walk_state, parent);
+ walk_state->op = parent;
+ walk_state->op_info = acpi_ps_get_opcode_info (parent->opcode);
+ walk_state->opcode = parent->opcode;
+
+ status = ascending_callback (walk_state);
/*
* If we are back to the starting point, the walk is complete.
@@ -206,11 +214,10 @@
static acpi_status
acpi_ps_delete_completed_op (
- acpi_walk_state *state,
- acpi_parse_object *op)
+ acpi_walk_state *walk_state)
{
- acpi_ps_free_op (op);
+ acpi_ps_free_op (walk_state->op);
return (AE_OK);
}
@@ -253,7 +260,6 @@
return_VOID;
}
- walk_state->parser_state = NULL;
walk_state->parse_flags = 0;
walk_state->descending_callback = NULL;
walk_state->ascending_callback = NULL;
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/parser/psxface.c linux/drivers/acpi/parser/psxface.c
--- v2.4.13/linux/drivers/acpi/parser/psxface.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/parser/psxface.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psxface - Parser external interfaces
- * $Revision: 47 $
+ * $Revision: 52 $
*
*****************************************************************************/
@@ -64,6 +64,7 @@
acpi_operand_object *obj_desc;
u32 i;
acpi_parse_object *op;
+ acpi_walk_state *walk_state;
FUNCTION_TRACE ("Psx_execute");
@@ -98,11 +99,11 @@
}
/*
- * Perform the first pass parse of the method to enter any
+ * 1) Perform the first pass parse of the method to enter any
* named objects that it creates into the namespace
*/
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "**** Begin Method Execution **** Entry=%p obj=%p\n",
+ "**** Begin Method Parse **** Entry=%p obj=%p\n",
method_node, obj_desc));
/* Create and init a Root Node */
@@ -112,13 +113,34 @@
return_ACPI_STATUS (AE_NO_MEMORY);
}
- status = acpi_ps_parse_aml (op, obj_desc->method.pcode,
- obj_desc->method.pcode_length,
- ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE,
- method_node, params, return_obj_desc,
- acpi_ds_load1_begin_op, acpi_ds_load1_end_op);
+ /* Create and initialize a new walk state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ status = acpi_ds_init_aml_walk (walk_state, op, method_node, obj_desc->method.aml_start,
+ obj_desc->method.aml_length, NULL, NULL, 1);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+
+ /* Parse the AML */
+
+ status = acpi_ps_parse_aml (walk_state);
acpi_ps_delete_parse_tree (op);
+
+ /*
+ * 2) Execute the method. Performs second pass parse simultaneously
+ */
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
+ "**** Begin Method Execution **** Entry=%p obj=%p\n",
+ method_node, obj_desc));
+
/* Create and init a Root Node */
op = acpi_ps_alloc_op (AML_SCOPE_OP);
@@ -126,20 +148,30 @@
return_ACPI_STATUS (AE_NO_MEMORY);
}
-
/* Init new op with the method name and pointer back to the NS node */
acpi_ps_set_name (op, method_node->name);
op->node = method_node;
+ /* Create and initialize a new walk state */
+
+ walk_state = acpi_ds_create_walk_state (TABLE_ID_DSDT,
+ NULL, NULL, NULL);
+ if (!walk_state) {
+ return_ACPI_STATUS (AE_NO_MEMORY);
+ }
+
+ status = acpi_ds_init_aml_walk (walk_state, op, method_node, obj_desc->method.aml_start,
+ obj_desc->method.aml_length, params, return_obj_desc, 3);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: delete walk state */
+ return_ACPI_STATUS (status);
+ }
+
/*
* The walk of the parse tree is where we actually execute the method
*/
- status = acpi_ps_parse_aml (op, obj_desc->method.pcode,
- obj_desc->method.pcode_length,
- ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE,
- method_node, params, return_obj_desc,
- acpi_ds_exec_begin_op, acpi_ds_exec_end_op);
+ status = acpi_ps_parse_aml (walk_state);
acpi_ps_delete_parse_tree (op);
if (params) {
@@ -151,12 +183,18 @@
}
+ if (ACPI_FAILURE (status)) {
+ DUMP_PATHNAME (method_node, "Ps_execute: method failed -",
+ ACPI_LV_ERROR, _COMPONENT);
+ }
+
+
/*
* If the method has returned an object, signal this to the caller with
* a control exception code
*/
if (*return_obj_desc) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Method returned Obj_desc=%X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Method returned Obj_desc=%p\n",
*return_obj_desc));
DUMP_STACK_ENTRY (*return_obj_desc);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/resources/rsutils.c linux/drivers/acpi/resources/rsutils.c
--- v2.4.13/linux/drivers/acpi/resources/rsutils.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/resources/rsutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsutils - Utilities for the resource manager
- * $Revision: 22 $
+ * $Revision: 23 $
*
******************************************************************************/
@@ -384,7 +384,6 @@
*/
cleanup:
- ACPI_MEM_FREE (byte_stream);
return_ACPI_STATUS (status);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/resources/rsxface.c linux/drivers/acpi/resources/rsxface.c
--- v2.4.13/linux/drivers/acpi/resources/rsxface.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/resources/rsxface.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsxface - Public interfaces to the resource manager
- * $Revision: 14 $
+ * $Revision: 15 $
*
******************************************************************************/
@@ -67,13 +67,6 @@
FUNCTION_TRACE ("Acpi_get_irq_routing_table ");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/*
* Must have a valid handle and buffer, So we have to have a handle
* and a return buffer structure, and if there is a non-zero buffer length
@@ -126,13 +119,6 @@
FUNCTION_TRACE ("Acpi_get_current_resources");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/*
* Must have a valid handle and buffer, So we have to have a handle
* and a return buffer structure, and if there is a non-zero buffer length
@@ -182,13 +168,6 @@
FUNCTION_TRACE ("Acpi_get_possible_resources");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/*
* Must have a valid handle and buffer, So we have to have a handle
* and a return buffer structure, and if there is a non-zero buffer length
@@ -234,13 +213,6 @@
FUNCTION_TRACE ("Acpi_set_current_resources");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
/*
* Must have a valid handle and buffer
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbconvrt.c linux/drivers/acpi/tables/tbconvrt.c
--- v2.4.13/linux/drivers/acpi/tables/tbconvrt.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbconvrt.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbconvrt - ACPI Table conversion utilities
- * $Revision: 27 $
+ * $Revision: 28 $
*
*****************************************************************************/
@@ -66,7 +66,7 @@
else
#endif
{
- pointer_size = sizeof (UINT64);
+ pointer_size = sizeof (u64);
}
/*
@@ -109,7 +109,7 @@
/* Compute size of the converted XSDT */
- table_size = (*number_of_tables * sizeof (UINT64)) + sizeof (acpi_table_header);
+ table_size = (*number_of_tables * sizeof (u64)) + sizeof (acpi_table_header);
/* Allocate an XSDT */
@@ -239,7 +239,7 @@
FADT2->sci_int = FADT71->sci_int;
FADT2->acpi_enable = FADT71->acpi_enable;
FADT2->acpi_disable = FADT71->acpi_disable;
- FADT2->S4_bios_req = FADT71->S4_bios_req;
+ FADT2->S4bios_req = FADT71->S4bios_req;
FADT2->plvl2_lat = FADT71->plvl2_lat;
FADT2->plvl3_lat = FADT71->plvl3_lat;
FADT2->day_alrm = FADT71->day_alrm;
@@ -476,7 +476,7 @@
/* Dump the entire FADT */
ACPI_DEBUG_PRINT ((ACPI_DB_TABLES,
- "Hex dump of common internal FADT, size %ld (%lX)\n",
+ "Hex dump of common internal FADT, size %d (%X)\n",
acpi_gbl_FADT->header.length, acpi_gbl_FADT->header.length));
DUMP_BUFFER ((u8 *) (acpi_gbl_FADT), acpi_gbl_FADT->header.length);
@@ -540,7 +540,7 @@
FACS1 = (facs_descriptor_rev1 *) acpi_gbl_FACS;
common_facs->global_lock = &(FACS1->global_lock);
- common_facs->firmware_waking_vector = (UINT64 *) &FACS1->firmware_waking_vector;
+ common_facs->firmware_waking_vector = (u64 *) &FACS1->firmware_waking_vector;
common_facs->vector_width = 32;
#endif
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbget.c linux/drivers/acpi/tables/tbget.c
--- v2.4.13/linux/drivers/acpi/tables/tbget.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbget.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbget - ACPI Table get* routines
- * $Revision: 55 $
+ * $Revision: 56 $
*
*****************************************************************************/
@@ -617,7 +617,7 @@
* Get the RSDT from the RSDP
*/
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "RSDP located at %p, RSDT physical=%8.8lX%8.8lX \n",
+ "RSDP located at %p, RSDT physical=%8.8X%8.8X \n",
acpi_gbl_RSDP, HIDWORD(acpi_gbl_RSDP->rsdt_physical_address),
LODWORD(acpi_gbl_RSDP->rsdt_physical_address)));
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbinstal.c linux/drivers/acpi/tables/tbinstal.c
--- v2.4.13/linux/drivers/acpi/tables/tbinstal.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbinstal.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbinstal - ACPI table installation and removal
- * $Revision: 42 $
+ * $Revision: 45 $
*
*****************************************************************************/
@@ -142,7 +142,7 @@
status = acpi_gbl_acpi_table_data[i].status;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Found %4.4s\n",
- acpi_gbl_acpi_table_data[i].signature));
+ (char*)acpi_gbl_acpi_table_data[i].signature));
break;
}
}
@@ -266,7 +266,7 @@
table_desc->base_pointer = table_info->base_pointer;
table_desc->length = table_info->length;
table_desc->allocation = table_info->allocation;
- table_desc->aml_pointer = (u8 *) (table_desc->pointer + 1),
+ table_desc->aml_start = (u8 *) (table_desc->pointer + 1),
table_desc->aml_length = (u32) (table_desc->length -
(u32) sizeof (acpi_table_header));
table_desc->table_id = acpi_ut_allocate_owner_id (OWNER_TYPE_TABLE);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbutils.c linux/drivers/acpi/tables/tbutils.c
--- v2.4.13/linux/drivers/acpi/tables/tbutils.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbutils.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbutils - Table manipulation utilities
- * $Revision: 40 $
+ * $Revision: 42 $
*
*****************************************************************************/
@@ -196,10 +196,10 @@
MOVE_UNALIGNED32_TO_32 (&signature, &table_header->signature);
if (!acpi_ut_valid_acpi_name (signature)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "Table signature at %p [%X] has invalid characters\n",
+ "Table signature at %p [%p] has invalid characters\n",
table_header, &signature));
- REPORT_WARNING (("Invalid table signature %4.4s found\n", &signature));
+ REPORT_WARNING (("Invalid table signature %4.4s found\n", (char*)&signature));
DUMP_BUFFER (table_header, sizeof (acpi_table_header));
return (AE_BAD_SIGNATURE);
}
@@ -210,7 +210,7 @@
if (table_header->length < sizeof (acpi_table_header)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"Invalid length in table header %p name %4.4s\n",
- table_header, &signature));
+ table_header, (char*)&signature));
REPORT_WARNING (("Invalid table header length found\n"));
DUMP_BUFFER (table_header, sizeof (acpi_table_header));
@@ -334,7 +334,7 @@
if (checksum) {
REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n",
- checksum, &table_header->signature));
+ checksum, (char*)&table_header->signature));
status = AE_BAD_CHECKSUM;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbxface.c linux/drivers/acpi/tables/tbxface.c
--- v2.4.13/linux/drivers/acpi/tables/tbxface.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbxface.c Wed Oct 24 14:06:22 2001
@@ -2,7 +2,7 @@
*
* Module Name: tbxface - Public interfaces to the ACPI subsystem
* ACPI table oriented interfaces
- * $Revision: 43 $
+ * $Revision: 45 $
*
*****************************************************************************/
@@ -59,14 +59,6 @@
FUNCTION_TRACE ("Acpi_load_tables");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
-
/* Get the RSDP */
status = acpi_os_get_root_pointer (ACPI_LOGICAL_ADDRESSING,
@@ -154,13 +146,6 @@
FUNCTION_TRACE ("Acpi_load_table");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
if (!table_ptr) {
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@@ -213,19 +198,11 @@
acpi_table_type table_type)
{
acpi_table_desc *list_head;
- acpi_status status;
FUNCTION_TRACE ("Acpi_unload_table");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Parameter validation */
if (table_type > ACPI_TABLE_MAX) {
@@ -289,13 +266,6 @@
FUNCTION_TRACE ("Acpi_get_table_header");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
if ((instance == 0) ||
(table_type == ACPI_TABLE_RSDP) ||
(!out_table_header)) {
@@ -371,13 +341,6 @@
FUNCTION_TRACE ("Acpi_get_table");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
/*
* If we have a buffer, we must have a length too
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/tables/tbxfroot.c linux/drivers/acpi/tables/tbxfroot.c
--- v2.4.13/linux/drivers/acpi/tables/tbxfroot.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/tables/tbxfroot.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
- * $Revision: 49 $
+ * $Revision: 52 $
*
*****************************************************************************/
@@ -152,7 +152,7 @@
{
u8 *table_ptr;
u8 *mem_rover;
- UINT64 phys_addr;
+ u64 phys_addr;
acpi_status status = AE_OK;
@@ -277,10 +277,10 @@
acpi_table_header **table_pointer)
{
ACPI_PHYSICAL_ADDRESS physical_address;
- acpi_table_header *rsdt_ptr;
+ acpi_table_header *rsdt_ptr = NULL;
acpi_table_header *table_ptr;
acpi_status status;
- u32 rsdt_size;
+ u32 rsdt_size = 0;
u32 table_size;
u32 table_count;
u32 i;
@@ -304,18 +304,49 @@
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- /* Get the RSDP */
+ if (!acpi_gbl_RSDP) {
+ /* Get the RSDP */
- status = acpi_os_get_root_pointer (flags, &physical_address);
- if (ACPI_FAILURE (status)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP not found\n"));
- return_ACPI_STATUS (AE_NO_ACPI_TABLES);
+ status = acpi_os_get_root_pointer (flags, &physical_address);
+ if (ACPI_FAILURE (status)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP not found\n"));
+ return_ACPI_STATUS (AE_NO_ACPI_TABLES);
+ }
+
+ /* Map and validate the RSDP */
+
+ if ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING) {
+ status = acpi_os_map_memory (physical_address, sizeof (RSDP_DESCRIPTOR),
+ (void **) &acpi_gbl_RSDP);
+ if (ACPI_FAILURE (status)) {
+ return_ACPI_STATUS (status);
+ }
+ }
+ else {
+ acpi_gbl_RSDP = (void *) (NATIVE_UINT) physical_address;
+ }
+
+ /*
+ * The signature and checksum must both be correct
+ */
+ if (STRNCMP ((NATIVE_CHAR *) acpi_gbl_RSDP, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0) {
+ /* Nope, BAD Signature */
+
+ status = AE_BAD_SIGNATURE;
+ goto cleanup;
+ }
+
+ if (acpi_tb_checksum (acpi_gbl_RSDP, RSDP_CHECKSUM_LENGTH) != 0) {
+ /* Nope, BAD Checksum */
+
+ status = AE_BAD_CHECKSUM;
+ goto cleanup;
+ }
}
- acpi_gbl_RSDP = (RSDP_DESCRIPTOR *) (ACPI_TBLPTR) physical_address;
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
- "RSDP located at %p, RSDT physical=%8.8lX%8.8lX \n",
+ "RSDP located at %p, RSDT physical=%8.8X%8.8X \n",
acpi_gbl_RSDP, HIDWORD(acpi_gbl_RSDP->rsdt_physical_address),
LODWORD(acpi_gbl_RSDP->rsdt_physical_address)));
@@ -377,7 +408,8 @@
/* Delete table mapping if using virtual addressing */
- if (table_size) {
+ if ((table_size) &&
+ ((flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)) {
acpi_os_unmap_memory (table_ptr, table_size);
}
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utalloc.c linux/drivers/acpi/utilities/utalloc.c
--- v2.4.13/linux/drivers/acpi/utilities/utalloc.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utalloc.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utalloc - local cache and memory allocation routines
- * $Revision: 100 $
+ * $Revision: 106 $
*
*****************************************************************************/
@@ -75,6 +75,7 @@
/* Mark the object as cached */
MEMSET (object, 0xCA, cache_info->object_size);
+ ((acpi_operand_object *) object)->common.data_type = ACPI_CACHED_OBJECT;
/* Put the object at the head of the cache list */
@@ -200,14 +201,14 @@
* Each memory allocation is tracked via a doubly linked list. Each
* element contains the caller's component, module name, function name, and
* line number. Acpi_ut_allocate and Acpi_ut_callocate call
- * Acpi_ut_add_element_to_alloc_list to add an element to the list; deletion
+ * Acpi_ut_track_allocation to add an element to the list; deletion
* occurs in the body of Acpi_ut_free.
*/
/*******************************************************************************
*
- * FUNCTION: Acpi_ut_search_alloc_list
+ * FUNCTION: Acpi_ut_find_allocation
*
* PARAMETERS: Address - Address of allocated memory
*
@@ -217,12 +218,12 @@
*
******************************************************************************/
-ACPI_DEBUG_MEM_BLOCK *
-acpi_ut_search_alloc_list (
+acpi_debug_mem_block *
+acpi_ut_find_allocation (
u32 list_id,
void *address)
{
- ACPI_DEBUG_MEM_BLOCK *element;
+ acpi_debug_mem_block *element;
FUNCTION_ENTRY ();
@@ -250,7 +251,7 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ut_add_element_to_alloc_list
+ * FUNCTION: Acpi_ut_track_allocation
*
* PARAMETERS: Address - Address of allocated memory
* Size - Size of the allocation
@@ -266,9 +267,9 @@
******************************************************************************/
acpi_status
-acpi_ut_add_element_to_alloc_list (
+acpi_ut_track_allocation (
u32 list_id,
- ACPI_DEBUG_MEM_BLOCK *address,
+ acpi_debug_mem_block *address,
u32 size,
u8 alloc_type,
u32 component,
@@ -276,11 +277,11 @@
u32 line)
{
ACPI_MEMORY_LIST *mem_list;
- ACPI_DEBUG_MEM_BLOCK *element;
+ acpi_debug_mem_block *element;
acpi_status status = AE_OK;
- FUNCTION_TRACE_PTR ("Ut_add_element_to_alloc_list", address);
+ FUNCTION_TRACE_PTR ("Ut_track_allocation", address);
if (list_id > ACPI_MEM_LIST_MAX) {
@@ -295,9 +296,9 @@
* This will catch several kinds of problems.
*/
- element = acpi_ut_search_alloc_list (list_id, address);
+ element = acpi_ut_find_allocation (list_id, address);
if (element) {
- REPORT_ERROR (("Ut_add_element_to_alloc_list: Address already present in list! (%p)\n",
+ REPORT_ERROR (("Ut_track_allocation: Address already present in list! (%p)\n",
address));
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Element %p Address %p\n", element, address));
@@ -317,7 +318,7 @@
/* Insert at list head */
if (mem_list->list_head) {
- ((ACPI_DEBUG_MEM_BLOCK *)(mem_list->list_head))->previous = address;
+ ((acpi_debug_mem_block *)(mem_list->list_head))->previous = address;
}
address->next = mem_list->list_head;
@@ -334,7 +335,7 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ut_delete_element_from_alloc_list
+ * FUNCTION: Acpi_ut_remove_allocation
*
* PARAMETERS: Address - Address of allocated memory
* Component - Component type of caller
@@ -348,9 +349,9 @@
******************************************************************************/
acpi_status
-acpi_ut_delete_element_from_alloc_list (
+acpi_ut_remove_allocation (
u32 list_id,
- ACPI_DEBUG_MEM_BLOCK *address,
+ acpi_debug_mem_block *address,
u32 component,
NATIVE_CHAR *module,
u32 line)
@@ -358,7 +359,7 @@
ACPI_MEMORY_LIST *mem_list;
- FUNCTION_TRACE ("Ut_delete_element_from_alloc_list");
+ FUNCTION_TRACE ("Ut_remove_allocation");
if (list_id > ACPI_MEM_LIST_MAX) {
@@ -370,7 +371,7 @@
/* No allocations! */
_REPORT_ERROR (module, line, component,
- ("Ut_delete_element_from_alloc_list: Empty allocation list, nothing to free!\n"));
+ ("Ut_remove_allocation: Empty allocation list, nothing to free!\n"));
return_ACPI_STATUS (AE_OK);
}
@@ -429,34 +430,34 @@
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Current allocations",
Mem_list->Current_count,
- ROUND_UP_TO_1_k (Mem_list->Current_size)));
+ ROUND_UP_TO_1K (Mem_list->Current_size)));
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Max concurrent allocations",
Mem_list->Max_concurrent_count,
- ROUND_UP_TO_1_k (Mem_list->Max_concurrent_size)));
+ ROUND_UP_TO_1K (Mem_list->Max_concurrent_size)));
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Total (all) internal objects",
Running_object_count,
- ROUND_UP_TO_1_k (Running_object_size)));
+ ROUND_UP_TO_1K (Running_object_size)));
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Total (all) allocations",
Running_alloc_count,
- ROUND_UP_TO_1_k (Running_alloc_size)));
+ ROUND_UP_TO_1K (Running_alloc_size)));
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Current Nodes",
Acpi_gbl_Current_node_count,
- ROUND_UP_TO_1_k (Acpi_gbl_Current_node_size)));
+ ROUND_UP_TO_1K (Acpi_gbl_Current_node_size)));
ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES,
("%30s: %4d (%3d Kb)\n", "Max Nodes",
Acpi_gbl_Max_concurrent_node_count,
- ROUND_UP_TO_1_k ((Acpi_gbl_Max_concurrent_node_count * sizeof (acpi_namespace_node)))));
+ ROUND_UP_TO_1K ((Acpi_gbl_Max_concurrent_node_count * sizeof (acpi_namespace_node)))));
*/
return_VOID;
}
@@ -464,7 +465,7 @@
/*******************************************************************************
*
- * FUNCTION: Acpi_ut_dump_current_allocations
+ * FUNCTION: Acpi_ut_dump_allocations
*
* PARAMETERS: Component - Component(s) to dump info for.
* Module - Module to dump info for. NULL means all.
@@ -476,20 +477,20 @@
******************************************************************************/
void
-acpi_ut_dump_current_allocations (
+acpi_ut_dump_allocations (
u32 component,
NATIVE_CHAR *module)
{
- ACPI_DEBUG_MEM_BLOCK *element;
+ acpi_debug_mem_block *element;
u32 i;
- FUNCTION_TRACE ("Ut_dump_current_allocations");
+ FUNCTION_TRACE ("Ut_dump_allocations");
element = acpi_gbl_memory_lists[0].list_head;
if (element == NULL) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
+ ACPI_DEBUG_PRINT ((ACPI_DB_OK,
"No outstanding allocations.\n"));
return_VOID;
}
@@ -500,46 +501,89 @@
*/
acpi_ut_acquire_mutex (ACPI_MTX_MEMORY);
- ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
+ ACPI_DEBUG_PRINT ((ACPI_DB_OK,
"Outstanding allocations:\n"));
for (i = 1; ; i++) /* Just a counter */ {
if ((element->component & component) &&
((module == NULL) || (0 == STRCMP (module, element->module)))) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
- "%p Len %04lX %9.9s-%ld",
- &element->user_space, element->size, element->module,
- element->line));
-
- /* Most of the elements will be internal objects. */
-
- switch (((acpi_operand_object *)
- (&element->user_space))->common.data_type) {
- case ACPI_DESC_TYPE_INTERNAL:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
- " Obj_type %s",
- acpi_ut_get_type_name (((acpi_operand_object *)(&element->user_space))->common.type)));
- break;
-
- case ACPI_DESC_TYPE_PARSER:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
- " Parse_obj Opcode %04X",
- ((acpi_parse_object *)(&element->user_space))->opcode));
- break;
-
- case ACPI_DESC_TYPE_NAMED:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
- " Node %4.4s",
- &((acpi_namespace_node *)(&element->user_space))->name));
- break;
-
- case ACPI_DESC_TYPE_STATE:
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
- " State_obj"));
- break;
- }
+ if (((acpi_operand_object *)(&element->user_space))->common.type != ACPI_CACHED_OBJECT) {
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ "%p Len %04X %9.9s-%d",
+ &element->user_space, element->size, element->module,
+ element->line));
+
+ /* Most of the elements will be internal objects. */
+
+ switch (((acpi_operand_object *)
+ (&element->user_space))->common.data_type) {
+ case ACPI_DESC_TYPE_INTERNAL:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " Obj_type %12.12s R%d",
+ acpi_ut_get_type_name (((acpi_operand_object *)(&element->user_space))->common.type),
+ ((acpi_operand_object *)(&element->user_space))->common.reference_count));
+ break;
+
+ case ACPI_DESC_TYPE_PARSER:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " Parse_obj Opcode %04X",
+ ((acpi_parse_object *)(&element->user_space))->opcode));
+ break;
+
+ case ACPI_DESC_TYPE_NAMED:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " Node %4.4s",
+ (char*)&((acpi_namespace_node *)(&element->user_space))->name));
+ break;
+
+ case ACPI_DESC_TYPE_STATE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " Untyped State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_UPDATE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " UPDATE State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_PACKAGE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " PACKAGE State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_CONTROL:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " CONTROL State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_RPSCOPE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " ROOT-PARSE-SCOPE State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_PSCOPE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " PARSE-SCOPE State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_WSCOPE:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " WALK-SCOPE State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_RESULT:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " RESULT State_obj"));
+ break;
+
+ case ACPI_DESC_TYPE_STATE_NOTIFY:
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK,
+ " NOTIFY State_obj"));
+ break;
+ }
- ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS, "\n"));
+ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "\n"));
+ }
}
if (element->next == NULL) {
@@ -551,7 +595,7 @@
acpi_ut_release_mutex (ACPI_MTX_MEMORY);
- ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
+ ACPI_DEBUG_PRINT ((ACPI_DB_OK,
"Total number of unfreed allocations = %d(%X)\n", i,i));
@@ -582,7 +626,7 @@
NATIVE_CHAR *module,
u32 line)
{
- ACPI_DEBUG_MEM_BLOCK *address;
+ acpi_debug_mem_block *address;
acpi_status status;
@@ -597,7 +641,7 @@
size = 1;
}
- address = acpi_os_allocate (size + sizeof (ACPI_DEBUG_MEM_BLOCK));
+ address = acpi_os_allocate (size + sizeof (acpi_debug_mem_block));
if (!address) {
/* Report allocation error */
@@ -607,7 +651,7 @@
return_PTR (NULL);
}
- status = acpi_ut_add_element_to_alloc_list (ACPI_MEM_LIST_GLOBAL, address, size,
+ status = acpi_ut_track_allocation (ACPI_MEM_LIST_GLOBAL, address, size,
MEM_MALLOC, component, module, line);
if (ACPI_FAILURE (status)) {
acpi_os_free (address);
@@ -645,7 +689,7 @@
NATIVE_CHAR *module,
u32 line)
{
- ACPI_DEBUG_MEM_BLOCK *address;
+ acpi_debug_mem_block *address;
acpi_status status;
@@ -661,7 +705,7 @@
}
- address = acpi_os_callocate (size + sizeof (ACPI_DEBUG_MEM_BLOCK));
+ address = acpi_os_callocate (size + sizeof (acpi_debug_mem_block));
if (!address) {
/* Report allocation error */
@@ -670,7 +714,7 @@
return_PTR (NULL);
}
- status = acpi_ut_add_element_to_alloc_list (ACPI_MEM_LIST_GLOBAL, address, size,
+ status = acpi_ut_track_allocation (ACPI_MEM_LIST_GLOBAL, address, size,
MEM_CALLOC, component, module, line);
if (ACPI_FAILURE (status)) {
acpi_os_free (address);
@@ -707,7 +751,7 @@
NATIVE_CHAR *module,
u32 line)
{
- ACPI_DEBUG_MEM_BLOCK *debug_block;
+ acpi_debug_mem_block *debug_block;
FUNCTION_TRACE_PTR ("Ut_free", address);
@@ -720,13 +764,13 @@
return_VOID;
}
- debug_block = (ACPI_DEBUG_MEM_BLOCK *)
- (((char *) address) - sizeof (ACPI_DEBUG_MEM_HEADER));
+ debug_block = (acpi_debug_mem_block *)
+ (((char *) address) - sizeof (acpi_debug_mem_header));
acpi_gbl_memory_lists[ACPI_MEM_LIST_GLOBAL].total_freed++;
acpi_gbl_memory_lists[ACPI_MEM_LIST_GLOBAL].current_total_size -= debug_block->size;
- acpi_ut_delete_element_from_alloc_list (ACPI_MEM_LIST_GLOBAL, debug_block,
+ acpi_ut_remove_allocation (ACPI_MEM_LIST_GLOBAL, debug_block,
component, module, line);
acpi_os_free (debug_block);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utcopy.c linux/drivers/acpi/utilities/utcopy.c
--- v2.4.13/linux/drivers/acpi/utilities/utcopy.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utcopy.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utcopy - Internal to external object translation utilities
- * $Revision: 82 $
+ * $Revision: 83 $
*
*****************************************************************************/
@@ -135,7 +135,7 @@
case AML_REVISION_OP:
external_object->type = ACPI_TYPE_INTEGER;
- external_object->integer.value = ACPI_CA_VERSION;
+ external_object->integer.value = ACPI_CA_SUPPORT_LEVEL;
break;
case AML_INT_NAMEPATH_OP:
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utdebug.c linux/drivers/acpi/utilities/utdebug.c
--- v2.4.13/linux/drivers/acpi/utilities/utdebug.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utdebug.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utdebug - Debug print routines
- * $Revision: 87 $
+ * $Revision: 90 $
*
*****************************************************************************/
@@ -87,10 +87,6 @@
if (acpi_gbl_nesting_level > acpi_gbl_deepest_nesting) {
acpi_gbl_deepest_nesting = acpi_gbl_nesting_level;
-
- if (acpi_gbl_deepest_nesting == 34) {
- acpi_os_printf ("hit deepest nesting\n");
- }
}
}
@@ -119,7 +115,7 @@
acpi_ut_debug_print (
u32 requested_debug_level,
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
char *format,
...)
{
@@ -192,7 +188,7 @@
acpi_ut_debug_print_raw (
u32 requested_debug_level,
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
char *format,
...)
{
@@ -230,7 +226,7 @@
void
acpi_ut_trace (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info)
+ acpi_debug_print_info *dbg_info)
{
acpi_gbl_nesting_level++;
@@ -262,7 +258,7 @@
void
acpi_ut_trace_ptr (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
void *pointer)
{
acpi_gbl_nesting_level++;
@@ -294,7 +290,7 @@
void
acpi_ut_trace_str (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
NATIVE_CHAR *string)
{
@@ -327,7 +323,7 @@
void
acpi_ut_trace_u32 (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
u32 integer)
{
@@ -359,7 +355,7 @@
void
acpi_ut_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info)
+ acpi_debug_print_info *dbg_info)
{
acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info,
@@ -390,7 +386,7 @@
void
acpi_ut_status_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
acpi_status status)
{
@@ -430,12 +426,12 @@
void
acpi_ut_value_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
acpi_integer value)
{
acpi_ut_debug_print (ACPI_LV_FUNCTIONS, line_number, dbg_info,
- "%s %08X\n", acpi_gbl_fn_exit_str, value);
+ "%s %8.8X%8.8X\n", acpi_gbl_fn_exit_str, HIDWORD(value), LODWORD(value));
acpi_gbl_nesting_level--;
}
@@ -462,7 +458,7 @@
void
acpi_ut_ptr_exit (
u32 line_number,
- ACPI_DEBUG_PRINT_INFO *dbg_info,
+ acpi_debug_print_info *dbg_info,
u8 *ptr)
{
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utdelete.c linux/drivers/acpi/utilities/utdelete.c
--- v2.4.13/linux/drivers/acpi/utilities/utdelete.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utdelete.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utdelete - object deletion and reference count utilities
- * $Revision: 76 $
+ * $Revision: 81 $
*
******************************************************************************/
@@ -183,14 +183,10 @@
* Delete any allocated memory found above
*/
if (obj_pointer) {
- if (!acpi_tb_system_table_pointer (obj_pointer)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting Obj Ptr %p \n", obj_pointer));
-
- ACPI_MEM_FREE (obj_pointer);
- }
+ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Deleting Obj Ptr %p \n", obj_pointer));
+ ACPI_MEM_FREE (obj_pointer);
}
-
/* Only delete the object if it was dynamically allocated */
if (object->common.flags & AOPOBJ_STATIC_ALLOCATION) {
@@ -346,8 +342,8 @@
*/
if (count > MAX_REFERENCE_COUNT) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
- "**** AE_ERROR **** Invalid Reference Count (%X) in object %p\n\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_WARN,
+ "**** Warning **** Large Reference Count (%X) in object %p\n\n",
count, object));
}
@@ -408,11 +404,6 @@
return_ACPI_STATUS (AE_OK);
}
- if (acpi_tb_system_table_pointer (object)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Object %p is Pcode Ptr\n", object));
- return_ACPI_STATUS (AE_OK);
- }
-
state = acpi_ut_create_update_state (object, action);
@@ -529,24 +520,9 @@
case ACPI_TYPE_REGION:
-
- /* TBD: [Investigate]
- Acpi_ut_update_ref_count (Object->Region.Addr_handler, Action);
- */
-/*
- Status =
- Acpi_ut_create_update_state_and_push (Object->Region.Addr_handler,
- Action, &State_list);
- if (ACPI_FAILURE (Status))
- {
- return_ACPI_STATUS (Status);
- }
-*/
- break;
-
-
case INTERNAL_TYPE_REFERENCE:
+ /* No subobjects */
break;
}
@@ -625,6 +601,15 @@
FUNCTION_TRACE_PTR ("Ut_remove_reference", object);
+ /*
+ * Allow a NULL pointer to be passed in, just ignore it. This saves
+ * each caller from having to check. Also, ignore NS nodes.
+ *
+ */
+ if (!object ||
+ (VALID_DESCRIPTOR_TYPE (object, ACPI_DESC_TYPE_NAMED))) {
+ return_VOID;
+ }
/*
* Ensure that we have a valid object
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/uteval.c linux/drivers/acpi/utilities/uteval.c
--- v2.4.13/linux/drivers/acpi/utilities/uteval.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/uteval.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: uteval - Object evaluation
- * $Revision: 30 $
+ * $Revision: 31 $
*
*****************************************************************************/
@@ -69,11 +69,11 @@
if (ACPI_FAILURE (status)) {
if (status == AE_NOT_FOUND) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%s on %4.4s was not found\n",
- object_name, &device_node->name));
+ object_name, (char*)&device_node->name));
}
else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "%s on %4.4s failed with status %s\n",
- object_name, &device_node->name,
+ object_name, (char*)&device_node->name,
acpi_format_exception (status)));
}
@@ -132,7 +132,7 @@
acpi_status
acpi_ut_execute_HID (
acpi_namespace_node *device_node,
- ACPI_DEVICE_ID *hid)
+ acpi_device_id *hid)
{
acpi_operand_object *obj_desc;
acpi_status status;
@@ -148,12 +148,12 @@
if (ACPI_FAILURE (status)) {
if (status == AE_NOT_FOUND) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "_HID on %4.4s was not found\n",
- &device_node->name));
+ (char*)&device_node->name));
}
else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_HID on %4.4s failed %s\n",
- &device_node->name, acpi_format_exception (status)));
+ (char*)&device_node->name, acpi_format_exception (status)));
}
return_ACPI_STATUS (status);
@@ -220,7 +220,7 @@
acpi_status
acpi_ut_execute_UID (
acpi_namespace_node *device_node,
- ACPI_DEVICE_ID *uid)
+ acpi_device_id *uid)
{
acpi_operand_object *obj_desc;
acpi_status status;
@@ -236,13 +236,13 @@
if (ACPI_FAILURE (status)) {
if (status == AE_NOT_FOUND) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "_UID on %4.4s was not found\n",
- &device_node->name));
+ (char*)&device_node->name));
}
else {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
"_UID on %4.4s failed %s\n",
- &device_node->name, acpi_format_exception (status)));
+ (char*)&device_node->name, acpi_format_exception (status)));
}
return (status);
@@ -325,7 +325,7 @@
if (AE_NOT_FOUND == status) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"_STA on %4.4s was not found, assuming present.\n",
- &device_node->name));
+ (char*)&device_node->name));
*flags = 0x0F;
status = AE_OK;
@@ -333,7 +333,7 @@
else if (ACPI_FAILURE (status)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "_STA on %4.4s failed %s\n",
- &device_node->name,
+ (char*)&device_node->name,
acpi_format_exception (status)));
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utglobal.c linux/drivers/acpi/utilities/utglobal.c
--- v2.4.13/linux/drivers/acpi/utilities/utglobal.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utglobal.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utglobal - Global variables for the ACPI subsystem
- * $Revision: 131 $
+ * $Revision: 133 $
*
*****************************************************************************/
@@ -147,7 +147,7 @@
const NATIVE_CHAR *acpi_gbl_db_sleep_states[ACPI_NUM_SLEEP_STATES] = {
"\\_S0_","\\_S1_","\\_S2_","\\_S3_",
- "\\_S4_","\\_S5_","\\_S4_b"};
+ "\\_S4_","\\_S5_","\\_S4B"};
/******************************************************************************
@@ -331,7 +331,7 @@
*/
static const NATIVE_CHAR acpi_gbl_bad_type[] = "UNDEFINED";
-#define TYPE_NAME_LENGTH 9 /* Maximum length of each string */
+#define TYPE_NAME_LENGTH 12 /* Maximum length of each string */
static const NATIVE_CHAR *acpi_gbl_ns_type_names[] = /* printable names of ACPI types */
{
@@ -349,21 +349,21 @@
/* 11 */ "Power",
/* 12 */ "Processor",
/* 13 */ "Thermal",
- /* 14 */ "Buff_field",
+ /* 14 */ "Buffer_field",
/* 15 */ "Ddb_handle",
- /* 16 */ "Debug_obj",
- /* 17 */ "Regn_field",
+ /* 16 */ "Debug_object",
+ /* 17 */ "Region_field",
/* 18 */ "Bank_field",
- /* 19 */ "Indx_field",
+ /* 19 */ "Index_field",
/* 20 */ "Reference",
/* 21 */ "Alias",
/* 22 */ "Notify",
- /* 23 */ "Addr_hndlr",
- /* 24 */ "Rsrc_desc",
- /* 25 */ "Rsrc_field",
- /* 26 */ "Rgn_fld_dfn",
- /* 27 */ "Bnk_fld_dfn",
- /* 28 */ "Idx_fld_dfn",
+ /* 23 */ "Addr_handler",
+ /* 24 */ "Resource_desc",
+ /* 25 */ "Resource_fld",
+ /* 26 */ "Region_fld_dfn",
+ /* 27 */ "Bank_fld_dfn",
+ /* 28 */ "Index_fld_dfn",
/* 29 */ "If",
/* 30 */ "Else",
/* 31 */ "While",
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utinit.c linux/drivers/acpi/utilities/utinit.c
--- v2.4.13/linux/drivers/acpi/utilities/utinit.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utinit.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utinit - Common ACPI subsystem initialization
- * $Revision: 101 $
+ * $Revision: 102 $
*
*****************************************************************************/
@@ -245,7 +245,7 @@
/* Debug only - display leftover memory allocation, if any */
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
- acpi_ut_dump_current_allocations (ACPI_UINT32_MAX, NULL);
+ acpi_ut_dump_allocations (ACPI_UINT32_MAX, NULL);
#endif
return_ACPI_STATUS (AE_OK);
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utmath.c linux/drivers/acpi/utilities/utmath.c
--- v2.4.13/linux/drivers/acpi/utilities/utmath.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/acpi/utilities/utmath.c Wed Oct 24 14:06:22 2001
@@ -0,0 +1,314 @@
+/*******************************************************************************
+ *
+ * Module Name: utmath - Integer math support routines
+ * $Revision: 7 $
+ *
+ ******************************************************************************/
+
+/*
+ * Copyright (C) 2000, 2001 R. Byron Moore
+ *
+ * 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 "acpi.h"
+
+
+#define _COMPONENT ACPI_UTILITIES
+ MODULE_NAME ("utmath")
+
+/*
+ * Support for double-precision integer divide. This code is included here
+ * in order to support kernel environments where the double-precision math
+ * library is not available.
+ */
+
+#ifndef ACPI_USE_NATIVE_DIVIDE
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ut_short_divide
+ *
+ * PARAMETERS: In_dividend - Pointer to the dividend
+ * Divisor - 32-bit divisor
+ * Out_quotient - Pointer to where the quotient is returned
+ * Out_remainder - Pointer to where the remainder is returned
+ *
+ * RETURN: Status (Checks for divide-by-zero)
+ *
+ * DESCRIPTION: Perform a short (maximum 64 bits divided by 32 bits)
+ * divide and modulo. The result is a 64-bit quotient and a
+ * 32-bit remainder.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ut_short_divide (
+ acpi_integer *in_dividend,
+ u32 divisor,
+ acpi_integer *out_quotient,
+ u32 *out_remainder)
+{
+ uint64_overlay dividend;
+ uint64_overlay quotient;
+ u32 remainder32;
+
+
+ FUNCTION_TRACE ("Ut_short_divide");
+
+ dividend.full = *in_dividend;
+
+ /* Always check for a zero divisor */
+
+ if (divisor == 0) {
+ REPORT_ERROR (("Acpi_ut_short_divide: Divide by zero\n"));
+ return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+ }
+
+ /*
+ * The quotient is 64 bits, the remainder is always 32 bits,
+ * and is generated by the second divide.
+ */
+ ACPI_DIV_64_BY_32 (0, dividend.part.hi, divisor,
+ quotient.part.hi, remainder32);
+ ACPI_DIV_64_BY_32 (remainder32, dividend.part.lo, divisor,
+ quotient.part.lo, remainder32);
+
+ /* Return only what was requested */
+
+ if (out_quotient) {
+ *out_quotient = quotient.full;
+ }
+ if (out_remainder) {
+ *out_remainder = remainder32;
+ }
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ut_divide
+ *
+ * PARAMETERS: In_dividend - Pointer to the dividend
+ * In_divisor - Pointer to the divisor
+ * Out_quotient - Pointer to where the quotient is returned
+ * Out_remainder - Pointer to where the remainder is returned
+ *
+ * RETURN: Status (Checks for divide-by-zero)
+ *
+ * DESCRIPTION: Perform a divide and modulo.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ut_divide (
+ acpi_integer *in_dividend,
+ acpi_integer *in_divisor,
+ acpi_integer *out_quotient,
+ acpi_integer *out_remainder)
+{
+ uint64_overlay dividend;
+ uint64_overlay divisor;
+ uint64_overlay quotient;
+ uint64_overlay remainder;
+ uint64_overlay normalized_dividend;
+ uint64_overlay normalized_divisor;
+ u32 partial1;
+ uint64_overlay partial2;
+ uint64_overlay partial3;
+
+
+ FUNCTION_TRACE ("Ut_divide");
+
+
+ /* Always check for a zero divisor */
+
+ if (*in_divisor == 0) {
+ REPORT_ERROR (("Acpi_ut_divide: Divide by zero\n"));
+ return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+ }
+
+ divisor.full = *in_divisor;
+ dividend.full = *in_dividend;
+ if (divisor.part.hi == 0) {
+ /*
+ * 1) Simplest case is where the divisor is 32 bits, we can
+ * just do two divides
+ */
+ remainder.part.hi = 0;
+
+ /*
+ * The quotient is 64 bits, the remainder is always 32 bits,
+ * and is generated by the second divide.
+ */
+ ACPI_DIV_64_BY_32 (0, dividend.part.hi, divisor.part.lo,
+ quotient.part.hi, partial1);
+ ACPI_DIV_64_BY_32 (partial1, dividend.part.lo, divisor.part.lo,
+ quotient.part.lo, remainder.part.lo);
+ }
+
+ else {
+ /*
+ * 2) The general case where the divisor is a full 64 bits
+ * is more difficult
+ */
+ quotient.part.hi = 0;
+ normalized_dividend = dividend;
+ normalized_divisor = divisor;
+
+ /* Normalize the operands (shift until the divisor is < 32 bits) */
+
+ do {
+ ACPI_SHIFT_RIGHT_64 (normalized_divisor.part.hi,
+ normalized_divisor.part.lo);
+ ACPI_SHIFT_RIGHT_64 (normalized_dividend.part.hi,
+ normalized_dividend.part.lo);
+
+ } while (normalized_divisor.part.hi != 0);
+
+ /* Partial divide */
+
+ ACPI_DIV_64_BY_32 (normalized_dividend.part.hi,
+ normalized_dividend.part.lo,
+ normalized_divisor.part.lo,
+ quotient.part.lo, partial1);
+
+ /*
+ * The quotient is always 32 bits, and simply requires adjustment.
+ * The 64-bit remainder must be generated.
+ */
+ partial1 = quotient.part.lo * divisor.part.hi;
+ partial2.full = (acpi_integer) quotient.part.lo * divisor.part.lo;
+ partial3.full = partial2.part.hi + partial1;
+
+ remainder.part.hi = partial3.part.lo;
+ remainder.part.lo = partial2.part.lo;
+
+ if (partial3.part.hi == 0) {
+ if (partial3.part.lo >= dividend.part.hi) {
+ if (partial3.part.lo == dividend.part.hi) {
+ if (partial2.part.lo > dividend.part.lo) {
+ quotient.part.lo--;
+ remainder.full -= divisor.full;
+ }
+ }
+ else {
+ quotient.part.lo--;
+ remainder.full -= divisor.full;
+ }
+ }
+
+ remainder.full = remainder.full - dividend.full;
+ remainder.part.hi = -((s32) remainder.part.hi);
+ remainder.part.lo = -((s32) remainder.part.lo);
+
+ if (remainder.part.lo) {
+ remainder.part.hi--;
+ }
+ }
+ }
+
+ /* Return only what was requested */
+
+ if (out_quotient) {
+ *out_quotient = quotient.full;
+ }
+ if (out_remainder) {
+ *out_remainder = remainder.full;
+ }
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+#else
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_ut_short_divide, Acpi_ut_divide
+ *
+ * DESCRIPTION: Native versions of the Ut_divide functions. Use these if either
+ * 1) The target is a 64-bit platform and therefore 64-bit
+ * integer math is supported directly by the machine.
+ * 2) The target is a 32-bit or 16-bit platform, and the
+ * double-precision integer math library is available to
+ * perform the divide.
+ *
+ ******************************************************************************/
+
+acpi_status
+acpi_ut_short_divide (
+ acpi_integer *in_dividend,
+ u32 divisor,
+ acpi_integer *out_quotient,
+ u32 *out_remainder)
+{
+
+ FUNCTION_TRACE ("Ut_short_divide");
+
+
+ /* Always check for a zero divisor */
+
+ if (divisor == 0) {
+ REPORT_ERROR (("Acpi_ut_short_divide: Divide by zero\n"));
+ return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+ }
+
+ /* Return only what was requested */
+
+ if (out_quotient) {
+ *out_quotient = *in_dividend / divisor;
+ }
+ if (out_remainder) {
+ *out_remainder = (u32) *in_dividend % divisor;
+ }
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+acpi_status
+acpi_ut_divide (
+ acpi_integer *in_dividend,
+ acpi_integer *in_divisor,
+ acpi_integer *out_quotient,
+ acpi_integer *out_remainder)
+{
+ FUNCTION_TRACE ("Ut_divide");
+
+
+ /* Always check for a zero divisor */
+
+ if (*in_divisor == 0) {
+ REPORT_ERROR (("Acpi_ut_divide: Divide by zero\n"));
+ return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO);
+ }
+
+
+ /* Return only what was requested */
+
+ if (out_quotient) {
+ *out_quotient = *in_dividend / *in_divisor;
+ }
+ if (out_remainder) {
+ *out_remainder = *in_dividend % *in_divisor;
+ }
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+#endif
+
+
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utmisc.c linux/drivers/acpi/utilities/utmisc.c
--- v2.4.13/linux/drivers/acpi/utilities/utmisc.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utmisc.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: utmisc - common utility procedures
- * $Revision: 50 $
+ * $Revision: 52 $
*
******************************************************************************/
@@ -662,6 +662,7 @@
/* Init fields specific to the update struct */
+ state->common.data_type = ACPI_DESC_TYPE_STATE_UPDATE;
state->update.object = object;
state->update.value = action;
@@ -679,9 +680,7 @@
*
* RETURN: Status
*
- * DESCRIPTION: Create an "Update State" - a flavor of the generic state used
- * to update reference counts and delete complex objects such
- * as packages.
+ * DESCRIPTION: Create a "Package State"
*
******************************************************************************/
@@ -706,6 +705,7 @@
/* Init fields specific to the update struct */
+ state->common.data_type = ACPI_DESC_TYPE_STATE_PACKAGE;
state->pkg.source_object = (acpi_operand_object *) internal_object;
state->pkg.dest_object = external_object;
state->pkg.index = index;
@@ -748,7 +748,8 @@
/* Init fields specific to the control struct */
- state->common.state = CONTROL_CONDITIONAL_EXECUTING;
+ state->common.data_type = ACPI_DESC_TYPE_STATE_CONTROL;
+ state->common.state = CONTROL_CONDITIONAL_EXECUTING;
return_PTR (state);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utobject.c linux/drivers/acpi/utilities/utobject.c
--- v2.4.13/linux/drivers/acpi/utilities/utobject.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utobject.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utobject - ACPI object create/delete/size/cache routines
- * $Revision: 55 $
+ * $Revision: 57 $
*
*****************************************************************************/
@@ -116,13 +116,6 @@
if (!object) {
ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
"**** Null Object Ptr\n"));
- return (FALSE);
- }
-
- /* Check for a pointer within one of the ACPI tables */
-
- if (acpi_tb_system_table_pointer (object)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Object %p is a Pcode Ptr\n", object));
return (FALSE);
}
diff -u --recursive --new-file v2.4.13/linux/drivers/acpi/utilities/utxface.c linux/drivers/acpi/utilities/utxface.c
--- v2.4.13/linux/drivers/acpi/utilities/utxface.c Sun Sep 23 11:40:57 2001
+++ linux/drivers/acpi/utilities/utxface.c Wed Oct 24 14:06:22 2001
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utxface - External interfaces for "global" ACPI functions
- * $Revision: 80 $
+ * $Revision: 82 $
*
*****************************************************************************/
@@ -240,19 +240,9 @@
acpi_status
acpi_terminate (void)
{
- acpi_status status;
-
-
FUNCTION_TRACE ("Acpi_terminate");
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
-
/* Terminate the AML Debugger if present */
DEBUGGER_EXEC(acpi_gbl_db_terminate_threads = TRUE);
@@ -271,10 +261,18 @@
acpi_ut_mutex_terminate ();
+#ifdef ENABLE_DEBUGGER
+
+ /* Shut down the debugger */
+
+ acpi_db_terminate ();
+#endif
+
/* Now we can shutdown the OS-dependent layer */
acpi_os_terminate ();
+
return_ACPI_STATUS (AE_OK);
}
@@ -330,18 +328,10 @@
{
acpi_system_info *info_ptr;
u32 i;
- acpi_status status;
FUNCTION_TRACE ("Acpi_get_system_info");
-
- /* Ensure that ACPI has been initialized */
-
- ACPI_IS_INITIALIZATION_COMPLETE (status);
- if (ACPI_FAILURE (status)) {
- return_ACPI_STATUS (status);
- }
/*
* Must have a valid buffer
diff -u --recursive --new-file v2.4.13/linux/drivers/atm/Config.in linux/drivers/atm/Config.in
--- v2.4.13/linux/drivers/atm/Config.in Fri Feb 16 16:02:35 2001
+++ linux/drivers/atm/Config.in Thu Oct 25 13:53:46 2001
@@ -7,6 +7,7 @@
tristate 'ATM over TCP' CONFIG_ATM_TCP
fi
if [ "$CONFIG_PCI" = "y" ]; then
+ tristate 'Efficient Networks Speedstream 3010' CONFIG_ATM_LANAI
tristate 'Efficient Networks ENI155P' CONFIG_ATM_ENI
if [ "$CONFIG_ATM_ENI" != "n" ]; then
bool ' Enable extended debugging' CONFIG_ATM_ENI_DEBUG
diff -u --recursive --new-file v2.4.13/linux/drivers/atm/Makefile linux/drivers/atm/Makefile
--- v2.4.13/linux/drivers/atm/Makefile Sun Sep 23 11:40:57 2001
+++ linux/drivers/atm/Makefile Thu Oct 25 13:53:46 2001
@@ -26,6 +26,7 @@
obj-$(CONFIG_ATM_TCP) += atmtcp.o
obj-$(CONFIG_ATM_IA) += iphase.o suni.o
obj-$(CONFIG_ATM_FIRESTREAM) += firestream.o
+obj-$(CONFIG_ATM_LANAI) += lanai.o
ifeq ($(CONFIG_ATM_FORE200E_PCA),y)
FORE200E_FW_OBJS += fore200e_pca_fw.o
diff -u --recursive --new-file v2.4.13/linux/drivers/atm/atmdev_init.c linux/drivers/atm/atmdev_init.c
--- v2.4.13/linux/drivers/atm/atmdev_init.c Fri Dec 29 14:35:47 2000
+++ linux/drivers/atm/atmdev_init.c Thu Oct 25 13:53:46 2001
@@ -25,6 +25,9 @@
#ifdef CONFIG_ATM_FORE200E
extern int fore200e_detect(void);
#endif
+#ifdef CONFIG_ATM_LANAI
+extern int lanai_detect(void);
+#endif
/*
@@ -55,6 +58,9 @@
#endif
#ifdef CONFIG_ATM_FORE200E
devs += fore200e_detect();
+#endif
+#ifdef CONFIG_ATM_LANAI
+ devs += lanai_detect();
#endif
return devs;
}
diff -u --recursive --new-file v2.4.13/linux/drivers/atm/lanai.c linux/drivers/atm/lanai.c
--- v2.4.13/linux/drivers/atm/lanai.c Wed Dec 31 16:00:00 1969
+++ linux/drivers/atm/lanai.c Thu Oct 25 13:53:46 2001
@@ -0,0 +1,2917 @@
+/* lanai.c -- Copyright 1999 by Mitchell Blank Jr
+ *
+ * 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 driver supports ATM cards based on the Efficient "Lanai"
+ * chipset such as the Speedstream 3010 and the ENI-25p. The
+ * Speedstream 3060 is currently not supported since we don't
+ * have the code to drive the on-board Alcatel DSL chipset (yet).
+ *
+ * Thanks to Efficient for supporting this project with hardware,
+ * documentation, and by answering my questions.
+ *
+ * Things not working yet:
+ *
+ * o We're only set up to compile as a module currently. i.e.
+ * you should put the source in drivers/atm/lanai.c and then
+ * just do "make drivers/atm/lanai.o" from the main
+ * source directory. This will produce a drivers/atm/lanai.o
+ * file suitable for insmod'ing
+ *
+ * o We don't support the Speedstream 3060 yet - this card has
+ * an on-board DSL modem chip by Alcatel and the driver will
+ * need some extra code added to handle it
+ *
+ * o Note that due to limitations of the Lanai only one VCC can be
+ * in CBR at once
+ *
+ * o We don't currently parse the EEPROM at all. The code is all
+ * there as per the spec, but it doesn't actually work. I think
+ * there may be some issues with the docs. Anyway, do NOT
+ * enable it yet - bugs in that code may actually damage your
+ * hardware! Because of this you should hardware an ESI before
+ * trying to use this in a LANE or MPOA environment.
+ *
+ * o AAL0 is stubbed in but the actual rx/tx path isn't written yet:
+ * vcc_tx_aal0() needs to send or queue a SKB
+ * vcc_tx_unqueue_aal0() needs to attempt to send queued SKBs
+ * vcc_rx_aal0() needs to handle AAL0 interrupts
+ * This isn't too much work - I just wanted to get other things
+ * done first.
+ *
+ * o lanai_change_qos() isn't written yet
+ *
+ * o There aren't any ioctl's yet -- I'd like to eventually support
+ * setting loopback and LED modes that way. (see lanai_ioctl)
+ *
+ * o If the segmentation engine or DMA gets shut down we should restart
+ * card as per section 17.0i. (see lanai_reset)
+ *
+ * o setsockopt(SO_CIRANGE) isn't done (although despite what the
+ * API says it isn't exactly commonly implemented)
+ */
+
+/* Version history:
+ * v.0.02 -- 11-JAN-2000 -- Endian fixes
+ * v.0.01 -- 30-NOV-1999 -- Initial release
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include