## Automatically generated incremental diff
## From: linux-2.4.23-bk18
## To: linux-2.4.23-bk19
## Robot: $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $
diff -urN linux-2.4.23-bk18/Documentation/Configure.help linux-2.4.23-bk19/Documentation/Configure.help
--- linux-2.4.23-bk18/Documentation/Configure.help 2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/Configure.help 2003-12-30 02:50:28.000000000 -0800
@@ -11372,6 +11372,18 @@
Say 'Y' to this option if you are planning to use Multilink PPP over the
PC300 synchronous communication boards.
+CONFIG_PCI200SYN
+ This driver is for PCI200SYN cards made by Goramo sp. j.
+ If you have such a card, say Y or M here and see
+
+
+ If you want to compile the driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read . The module
+ will be called pci200syn.o.
+
+ If unsure, say N here.
+
SDL RISCom/N2 support
CONFIG_N2
This driver is for RISCom/N2 single or dual channel ISA cards
@@ -11400,25 +11412,6 @@
If unsure, say N here.
-CONFIG_HDLC_DEBUG_PKT
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_HARD_HEADER
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_ECN
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_RINGS
- If you answer Y here you will be able to get a diagnostic dump of
- port's TX and RX packet rings, using "sethdlc hdlcX private"
- command. It does not affect normal operations.
-
- If unsure, say Y here.
-
Ethernet (10 or 100Mbit)
CONFIG_NET_ETHERNET
Ethernet (also called IEEE 802.3 or ISO 8802-2) is the most common
@@ -19052,9 +19045,9 @@
.
The module will be called i2c-elv.o.
-Velleman K9000 adapter
+Velleman K8000 adapter
CONFIG_I2C_VELLEMAN
- This supports the Velleman K9000 parallel-port I2C adapter. Say Y
+ This supports the Velleman K8000 parallel-port I2C adapter. Say Y
if you own such an adapter.
This driver is also available as a module. If you want to compile
@@ -28276,6 +28269,14 @@
This support is also available as a module. If compiled as a
module, it will be called scx200.o.
+NatSemi SCx200 GPIO support
+CONFIG_SCx200_GPIO
+ Give userspace access to the GPIO pins on the National
+ Semiconductor SCx200 processors.
+
+ This support is also available as a module. If compiled as a
+ module, it will be called scx200_gpio.o.
+
NatSemi SCx200 Watchdog
CONFIG_SCx200_WDT
Enable the built-in watchdog timer support on the National
@@ -28427,7 +28428,7 @@
If compiled as a module, it will be called uclinux.o.
NatSemi SCx200 I2C using GPIO pins
-CONFIG_SCx200_GPIO
+CONFIG_SCx200_I2C
Enable the use of two GPIO pins of a SCx200 processor as an I2C bus.
If you don't know what to do here, say N.
diff -urN linux-2.4.23-bk18/Documentation/i2c/i2c-velleman linux-2.4.23-bk19/Documentation/i2c/i2c-velleman
--- linux-2.4.23-bk18/Documentation/i2c/i2c-velleman 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/i2c/i2c-velleman 2003-12-30 02:50:28.000000000 -0800
@@ -0,0 +1,23 @@
+i2c-velleman driver
+-------------------
+This is a driver for i2c-hw access for Velleman K8000 and other adapters.
+
+Useful links
+------------
+Velleman:
+ http://www.velleman.be/
+
+Velleman K8000 Howto:
+ http://howto.htlw16.ac.at/k8000-howto.html
+
+K8000 and K8005 libraries
+-------------------------
+The project has lead to new libs for the Velleman K8000 and K8005:
+LIBK8000 v1.99.1 and LIBK8005 v0.21
+
+With these libs, you can control the K8000 interface card and the K8005
+stepper motor card with the simple commands which are in the original
+Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and
+many more, using /dev/velleman.
+
+The libs can be found on http://groups.yahoo.com/group/k8000/files/linux/
diff -urN linux-2.4.23-bk18/Documentation/i2c/summary linux-2.4.23-bk19/Documentation/i2c/summary
--- linux-2.4.23-bk18/Documentation/i2c/summary 2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/i2c/summary 2003-12-30 02:50:28.000000000 -0800
@@ -71,5 +71,5 @@
i2c-ppc405: IBM 405xx processor I2C device (uses i2c-algo-ppc405) (NOT BUILT BY DEFAULT)
i2c-pport: Primitive parallel port adapter (uses i2c-algo-bit)
i2c-rpx: RPX board Motorola 8xx I2C device (uses i2c-algo-8xx) (NOT BUILT BY DEFAULT)
-i2c-velleman: Velleman K9000 parallel port adapter (uses i2c-algo-bit)
+i2c-velleman: Velleman K8000 parallel port adapter (uses i2c-algo-bit)
diff -urN linux-2.4.23-bk18/Makefile linux-2.4.23-bk19/Makefile
--- linux-2.4.23-bk18/Makefile 2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Makefile 2003-12-30 02:50:28.000000000 -0800
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 23
-EXTRAVERSION = -bk18
+EXTRAVERSION = -bk19
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
diff -urN linux-2.4.23-bk18/arch/ppc/boot/Makefile linux-2.4.23-bk19/arch/ppc/boot/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/Makefile 2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -33,6 +33,7 @@
tools-$(CONFIG_4xx) := mktree
tools-$(CONFIG_LOPEC) := mkbugboot mkprep
tools-$(CONFIG_PPLUS) := mkbugboot mkprep
+tools-$(CONFIG_PRPMC750) := mkbugboot mkprep
tools-$(CONFIG_SPRUCE) := mktree
# These are dirs we don't want to go into on BOOT_TARGETS. We have them for
diff -urN linux-2.4.23-bk18/arch/ppc/boot/chrp/Makefile linux-2.4.23-bk19/arch/ppc/boot/chrp/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/chrp/Makefile 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/chrp/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -50,13 +50,13 @@
--set-section-flags=.sysmap=contents,alloc,load,readonly,data
endif
-zImage: $(OBJS) $(LIBS) $(ADDNOTE)
+zImage: $(OBJS) $(LIBS) $(ADDNOTE) ../ld.script
$(LD) $(LD_ARGS) -o ../images/$@.chrp $(OBJS) $(LIBS)
$(OBJCOPY) ../images/$@.chrp ../images/$@.chrp -R .comment -R .ramdisk
cp ../images/$@.chrp ../images/$@.chrp-rs6k
$(ADDNOTE) ../images/$@.chrp-rs6k
-zImage.initrd: $(OBJS) $(LIBS) $(ADDNOTE) ../images/ramdisk.image.gz
+zImage.initrd: $(OBJS) $(LIBS) $(ADDNOTE) ../images/ramdisk.image.gz ../ld.script
$(OBJCOPY) image.o image.o \
--add-section=.ramdisk=../images/ramdisk.image.gz \
--set-section-flags=.ramdisk=contents,alloc,load,readonly,data
diff -urN linux-2.4.23-bk18/arch/ppc/boot/common/misc-simple.c linux-2.4.23-bk19/arch/ppc/boot/common/misc-simple.c
--- linux-2.4.23-bk18/arch/ppc/boot/common/misc-simple.c 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/boot/common/misc-simple.c 2003-12-30 02:50:29.000000000 -0800
@@ -75,16 +75,9 @@
extern void gunzip(void *, int, unsigned char *, int *);
extern void serial_fixups(void);
-/* Allow decompress_kernel to be hooked into. This is the default. */
-void * __attribute__ ((weak))
-load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
- void *bp)
-{
- return decompress_kernel(load_addr, num_words, cksum, bp);
-}
-
-struct bi_record *
-decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
+static struct bi_record *
+decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
+ void *ignored)
{
#ifdef INTERACTIVE_CONSOLE
int timer = 0;
@@ -271,3 +264,11 @@
return (struct bi_record *)rec_loc;
}
+
+/* Allow decompress_kernel to be hooked into. This is the default. */
+void * __attribute__ ((weak))
+load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
+ void *bp)
+{
+ return decompress_kernel(load_addr, num_words, cksum, bp);
+}
diff -urN linux-2.4.23-bk18/arch/ppc/boot/pmac/Makefile linux-2.4.23-bk19/arch/ppc/boot/pmac/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/pmac/Makefile 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/pmac/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -84,7 +84,7 @@
rm -f coffboot.initrd
ln -sf vmlinux.initrd.coff ../images/zImage.initrd.pmac
-vmlinux.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o
+vmlinux.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o ../ld.script
$(LD) $(CHRP_LD_ARGS) -o ../images/$@ $(CHRPOBJS) $(LIBS) image.o
$(MKNOTE) > note
$(OBJCOPY) ../images/$@ ../images/$@ --add-section=.note=note \
@@ -92,7 +92,7 @@
rm -f note
vmlinux.initrd.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o \
- ../images/ramdisk.image.gz
+ ../images/ramdisk.image.gz ../ld.script
$(OBJCOPY) image.o image-elf.o \
--add-section=.ramdisk=../images/ramdisk.image.gz \
--set-section-flags=.ramdisk=contents,alloc,load,readonly,data
diff -urN linux-2.4.23-bk18/arch/ppc/boot/simple/Makefile linux-2.4.23-bk19/arch/ppc/boot/simple/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/simple/Makefile 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/simple/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -9,12 +9,10 @@
# or implied.
#
# Notes:
-# (1) For machine targets which produce more than one image, define
-# ZNETBOOT and ZNETBOOTRD to the image which should be available for
-# 'znetboot' and 'znetboot.initrd`
-# (2) For machine targets which use the mktree program, define END to be
-# the machine name you want in the image, and you can optionally set
-# ENTRYPOINT which the image should be loaded at. The optimal setting
+# (1) All machines must set the END variable to the suffix of the preferred
+# final image (i.e. would be copied in 'make znetboot'.
+# (2) For machine targets which use the mktree program you can optionally
+# set ENTRYPOINT which the image should be loaded at. The optimal setting
# for ENTRYPOINT is the link address.
USE_STANDARD_AS_RULE := true
@@ -25,15 +23,13 @@
ifeq ($(CONFIG_EMBEDDEDBOOT),y)
ZIMAGE := zImage-EMBEDDED
ZIMAGEINITRD := zImage.initrd-EMBEDDED
-TFTPIMAGE := /tftpboot/zImage.embedded
MISC := misc-embedded.o
+END := embedded
endif
ifeq ($(CONFIG_IBM_OPENBIOS),y)
ZIMAGE := zImage-TREE
ZIMAGEINITRD := zImage.initrd-TREE
END := treeboot
-ZNETBOOT := zImage.treeboot
-ZNETBOOTRD := zImage.initrd.treeboot
TFTPIMAGE := /tftpboot/zImage.embedded
MISC := misc-embedded.o
endif
@@ -42,9 +38,6 @@
ZIMAGEINITRD := zImage.initrd-TREE
END := ebony
ENTRYPOINT := 0x00800000
-ZNETBOOT := zImage.treeboot
-ZNETBOOTRD := zImage.initrd.treeboot
-TFTPIMAGE := /tftpboot/zImage.$(END)
EXTRA := misc-44x.o
endif
ifeq ($(CONFIG_OCOTEA),y)
@@ -52,25 +45,21 @@
ZIMAGEINITRD := zImage.initrd-TREE
END := ocotea
ENTRYPOINT := 0x00800000
-ZNETBOOT := zImage.treeboot
-ZNETBOOTRD := zImage.initrd.treeboot
-TFTPIMAGE := /tftpboot/zImage.$(END)
EXTRA := misc-44x.o
endif
ifeq ($(CONFIG_GEMINI),y)
ZIMAGE := zImage-SMON
ZIMAGEINITRD := zImage.initrd-SMON
-TFTPIMAGE := /tftpboot/zImage.gemini
+END := gemini
endif
# kbuild-2.4 'feature', only one of these will ever by 'y' at a time.
# The rest will be unset.
-ifeq ($(CONFIG_LOPEC)$(CONFIG_PPLUS),y)
+ifeq ($(CONFIG_LOPEC)$(CONFIG_PPLUS)$(CONFIG_PRPMC750),y)
ZIMAGE := zImage-PPLUS
ZIMAGEINITRD := zImage.initrd-PPLUS
EXTRA := ../common/mpc10x_memory.o
TFTPIMAGE := /tftpboot/zImage.pplus
-ZNETBOOT := zImage.pplus
-ZNETBOOTRD := zImage.initrd.pplus
+END := pplus
endif
ifeq ($(CONFIG_PPLUS),y)
EXTRA := legacy.o
@@ -78,7 +67,14 @@
ifeq ($(CONFIG_PAL4),y)
ZIMAGE := zImage-PAL4
ZIMAGEINITRD := zImage.initrd-PAL4
-TFTPIMAGE := /tftpboot/zImage.pal4
+END := pal4
+endif
+ifeq ($(CONFIG_SANDPOINT),y)
+ZIMAGE := zImage-SP
+ZIMAGEINITRD := zImage.initrd-SP
+CACHEFLAG := -include clear.S
+TFTPIMAGE := /tftpboot/zImage.sandpoint
+END := sandpoint
endif
ifeq ($(CONFIG_SPRUCE),y)
ZIMAGE := zImage-TREE
@@ -86,12 +82,14 @@
ENTRYPOINT := 0x00800000
MISC := misc-spruce.o
END := spruce
-TFTPIMAGE := /tftpboot/zImage.$(END)
endif
+
+TFTPIMAGE ?= /tftpboot/zImage.$(END)
ifeq ($(CONFIG_SMP),y)
TFTPIMAGE += .smp
endif
+
# Setup a default address to put ourselves, change it as needed.
LD_ARGS = -T ../ld.script -Ttext 0x00800000 -Bstatic
ifdef CONFIG_8xx
@@ -156,30 +154,22 @@
rm -f zvmlinux.initrd
znetboot: zImage
-ifneq ($(ZNETBOOT),)
- cp ../images/$(ZNETBOOT) $(TFTPIMAGE)
-else
- cp ../images/zImage.* $(TFTPIMAGE)
-endif
+ cp ../images/zImage.$(END) $(TFTPIMAGE)
znetboot.initrd: zImage.initrd
-ifneq ($(ZNETBOOTRD),)
- cp ../images/$(ZNETBOOTRD) $(TFTPIMAGE)
-else
- cp ../images/zImage.* $(TFTPIMAGE)
-endif
+ cp ../images/zImage.initrd.$(END) $(TFTPIMAGE)
zImage-EMBEDDED: zvmlinux
- mv zvmlinux ../images/zImage.embedded
+ mv zvmlinux ../images/zImage.$(END)
zImage.initrd-EMBEDDED: zvmlinux.initrd
- mv zvmlinux.initrd ../images/zImage.initrd.embedded
+ mv zvmlinux.initrd ../images/zImage.initrd.$(END)
zImage-PAL4: zvmlinux
- mv zvmlinux ../images/zImage.pal4
+ mv zvmlinux ../images/zImage.$(END)
zImage.initrd-PAL4: zvmlinux.initrd
- mv zvmlinux.initrd ../images/zImage.initrd.pal4
+ mv zvmlinux.initrd ../images/zImage.initrd.$(END)
zImage-PPLUS: zvmlinux $(MKPREP) $(MKBUGBOOT)
$(MKPREP) -pbp zvmlinux ../images/zImage.pplus
@@ -189,11 +179,17 @@
$(MKPREP) -pbp zvmlinux.initrd ../images/zImage.initrd.pplus
$(MKBUGBOOT) zvmlinux.initrd ../images/zImage.initrd.bugboot
+zImage-SP: zvmlinux
+ mv zvmlinux ../images/zImage.sandpoint
+
+zImage.initrd-SP: zvmlinux.initrd
+ mv zvmlinux.initrd ../images/zImage.initrd.sandpoint
+
zImage-SMON: zvmlinux
- dd if=zvmlinux of=../images/zImage.gemini skip=64 bs=1k
+ dd if=zvmlinux of=../images/zImage.$(END) skip=64 bs=1k
zImage.initrd-SMON: zvmlinux.initrd
- dd if=zvmlinux.initrd of=../images/zImage.initrd.gemini skip=64 bs=1k
+ dd if=zvmlinux.initrd of=../images/zImage.initrd.$(END) skip=64 bs=1k
zImage-TREE: zvmlinux
$(MKTREE) zvmlinux ../images/zImage.$(END) $(ENTRYPOINT)
diff -urN linux-2.4.23-bk18/arch/ppc/boot/simple/clear.S linux-2.4.23-bk19/arch/ppc/boot/simple/clear.S
--- linux-2.4.23-bk18/arch/ppc/boot/simple/clear.S 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/simple/clear.S 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,19 @@
+/*
+ * Code to call _setup_L2CR to flus, invalidate and disable the L2,
+ * and if present, do the same to the L3.
+ */
+
+#define CLEAR_CACHES \
+ bl _setup_L2CR; \
+ \
+ /* If 745x, turn off L3CR as well */ \
+ mfspr r8,PVR; \
+ srwi r8,r8,16; \
+ \
+ cmpli cr0,r8,0x8000; /* 7450 */ \
+ cmpli cr1,r8,0x8001; /* 7455 */ \
+ cmpli cr2,r8,0x8002; /* 7457 */ \
+ /* Now test if any are true. */ \
+ cror 4*cr0+eq,4*cr0+eq,4*cr1+eq; \
+ cror 4*cr0+eq,4*cr0+eq,4*cr2+eq; \
+ beql _setup_L3CR
diff -urN linux-2.4.23-bk18/arch/ppc/boot/utils/mkprep.c linux-2.4.23-bk19/arch/ppc/boot/utils/mkprep.c
--- linux-2.4.23-bk18/arch/ppc/boot/utils/mkprep.c 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/boot/utils/mkprep.c 2003-12-30 02:50:29.000000000 -0800
@@ -12,12 +12,14 @@
* -- Cort
*
* Modified for x86 hosted builds by Matt Porter
+ * Modified for Sparc hosted builds by Peter Wahl
*/
#include
#include
#include
#include
+#include
#include
#include
@@ -147,7 +149,7 @@
void write_prep_partition(int in, int out)
{
unsigned char block[512];
- partition_entry_t *pe = (partition_entry_t *)&block[0x1BE];
+ partition_entry_t pe;
dword_t *entry = (dword_t *)&block[0];
dword_t *length = (dword_t *)&block[sizeof(long)];
struct stat info;
@@ -177,8 +179,8 @@
* Build a "PReP" partition table entry in the boot record
* - "PReP" may only look at the system_indicator
*/
- pe->boot_indicator = BootActive;
- pe->system_indicator = SystemPrep;
+ pe.boot_indicator = BootActive;
+ pe.system_indicator = SystemPrep;
/*
* The first block of the diskette is used by this "boot record" which
* actually contains the partition table. (The first block of the
@@ -186,12 +188,12 @@
* one partition on the diskette and it shall contain the rest of the
* diskette.
*/
- pe->starting_head = 0; /* zero-based */
- pe->starting_sector = 2; /* one-based */
- pe->starting_cylinder = 0; /* zero-based */
- pe->ending_head = 1; /* assumes two heads */
- pe->ending_sector = 18; /* assumes 18 sectors/track */
- pe->ending_cylinder = 79; /* assumes 80 cylinders/diskette */
+ pe.starting_head = 0; /* zero-based */
+ pe.starting_sector = 2; /* one-based */
+ pe.starting_cylinder = 0; /* zero-based */
+ pe.ending_head = 1; /* assumes two heads */
+ pe.ending_sector = 18; /* assumes 18 sectors/track */
+ pe.ending_cylinder = 79; /* assumes 80 cylinders/diskette */
/*
* The "PReP" software ignores the above fields and just looks at
@@ -201,22 +203,24 @@
* - unlike the above sector numbers, the beginning sector is zero-based!
*/
#if 0
- pe->beginning_sector = cpu_to_le32(1);
+ pe.beginning_sector = cpu_to_le32(1);
#else
/* This has to be 0 on the PowerStack? */
#ifdef __i386__
- pe->beginning_sector = 0;
+ pe.beginning_sector = 0;
#else
- pe->beginning_sector = cpu_to_le32(0);
+ pe.beginning_sector = cpu_to_le32(0);
#endif /* __i386__ */
#endif
#ifdef __i386__
- pe->number_of_sectors = 2*18*80-1;
+ pe.number_of_sectors = 2*18*80-1;
#else
- pe->number_of_sectors = cpu_to_le32(2*18*80-1);
+ pe.number_of_sectors = cpu_to_le32(2*18*80-1);
#endif /* __i386__ */
+ memcpy(&block[0x1BE],&pe,sizeof(pe));
+
write( out, block, sizeof(block) );
write( out, entry, sizeof(*entry) );
write( out, length, sizeof(*length) );
diff -urN linux-2.4.23-bk18/arch/ppc/config.in linux-2.4.23-bk19/arch/ppc/config.in
--- linux-2.4.23-bk18/arch/ppc/config.in 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/config.in 2003-12-30 02:50:29.000000000 -0800
@@ -111,13 +111,15 @@
Amiga-APUS CONFIG_APUS \
IBM-Spruce CONFIG_SPRUCE \
Motorola-LoPEC CONFIG_LOPEC \
+ Motorola-Sandpoint CONFIG_SANDPOINT \
Motorola-PowerPlus CONFIG_PPLUS \
+ Motorola-PrPMC750 CONFIG_PRPMC750 \
SBS-Palomar4 CONFIG_PAL4 \
Synergy-Gemini CONFIG_GEMINI" CHRP/PowerMac/PReP
fi
-if [ "$CONFIG_SPRUCE" = "y" ]; then
- define_bool CONFIG_GEN550 y
+if [ "$CONFIG_SANDPOINT" = "y" ]; then
+ bool 'Enable MPC10x store gathering' CONFIG_MPC10X_STORE_GATHERING
fi
if [ "$CONFIG_LOPEC" = "y" ]; then
@@ -129,6 +131,19 @@
define_bool CONFIG_GEN550 y
fi
+if [ "$CONFIG_PRPMC750" = "y" ]; then
+ define_bool CONFIG_GEN550 y
+fi
+
+if [ "$CONFIG_SANDPOINT" = "y" ]; then
+ define_bool CONFIG_EPIC_SERIAL_MODE y
+ define_bool CONFIG_GEN550 y
+fi
+
+if [ "$CONFIG_SPRUCE" = "y" ]; then
+ define_bool CONFIG_GEN550 y
+fi
+
bool 'Symmetric multi-processing support' CONFIG_SMP
if [ "$CONFIG_SMP" = "y" ]; then
bool ' Distribute interrupts on all CPUs by default' CONFIG_IRQ_ALL_CPUS
@@ -331,6 +346,7 @@
define_bool CONFIG_BINFMT_ELF y
define_bool CONFIG_KERNEL_ELF y
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
source drivers/pci/Config.in
diff -urN linux-2.4.23-bk18/arch/ppc/configs/IVMS8_defconfig linux-2.4.23-bk19/arch/ppc/configs/IVMS8_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/IVMS8_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/IVMS8_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/SM850_defconfig linux-2.4.23-bk19/arch/ppc/configs/SM850_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/SM850_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/SM850_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/SPD823TS_defconfig linux-2.4.23-bk19/arch/ppc/configs/SPD823TS_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/SPD823TS_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/SPD823TS_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM823L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM823L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM823L_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM823L_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM850L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM850L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM850L_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM850L_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM860L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM860L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM860L_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM860L_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/apus_defconfig linux-2.4.23-bk19/arch/ppc/configs/apus_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/apus_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/apus_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -59,6 +59,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/briq_defconfig linux-2.4.23-bk19/arch/ppc/configs/briq_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/briq_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/briq_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/bseip_defconfig linux-2.4.23-bk19/arch/ppc/configs/bseip_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/bseip_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/bseip_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -67,6 +67,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/common_defconfig linux-2.4.23-bk19/arch/ppc/configs/common_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/common_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/common_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
CONFIG_HOTPLUG=y
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ebony_defconfig linux-2.4.23-bk19/arch/ppc/configs/ebony_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ebony_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/ebony_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -62,6 +62,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/est8260_defconfig linux-2.4.23-bk19/arch/ppc/configs/est8260_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/est8260_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/est8260_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -50,6 +50,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/gemini_defconfig linux-2.4.23-bk19/arch/ppc/configs/gemini_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/gemini_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/gemini_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ibmchrp_defconfig linux-2.4.23-bk19/arch/ppc/configs/ibmchrp_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ibmchrp_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/ibmchrp_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/mbx_defconfig linux-2.4.23-bk19/arch/ppc/configs/mbx_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/mbx_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/mbx_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -67,6 +67,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/oak_defconfig linux-2.4.23-bk19/arch/ppc/configs/oak_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/oak_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/oak_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -52,6 +52,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ocotea_defconfig linux-2.4.23-bk19/arch/ppc/configs/ocotea_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ocotea_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/ocotea_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -63,6 +63,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pal4_defconfig linux-2.4.23-bk19/arch/ppc/configs/pal4_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pal4_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pal4_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pmac_defconfig linux-2.4.23-bk19/arch/ppc/configs/pmac_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pmac_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pmac_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
CONFIG_HOTPLUG=y
diff -urN linux-2.4.23-bk18/arch/ppc/configs/power3_defconfig linux-2.4.23-bk19/arch/ppc/configs/power3_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/power3_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/power3_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -52,6 +52,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pplus_defconfig linux-2.4.23-bk19/arch/ppc/configs/pplus_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pplus_defconfig 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pplus_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/prpmc750_defconfig linux-2.4.23-bk19/arch/ppc/configs/prpmc750_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/prpmc750_defconfig 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/prpmc750_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,622 @@
+#
+# Automatically generated make config: don't edit
+#
+# CONFIG_UID16 is not set
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_HAVE_DEC_LOCK=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_8260 is not set
+CONFIG_PPC_STD_MMU=y
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_LOPEC is not set
+# CONFIG_SANDPOINT is not set
+# CONFIG_PPLUS is not set
+CONFIG_PRPMC750=y
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+CONFIG_GEN550=y
+# CONFIG_SMP is not set
+# CONFIG_ALTIVEC is not set
+# CONFIG_TAU is not set
+CONFIG_PPC_ISATIMER=y
+
+#
+# General setup
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_ISA is not set
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
+# CONFIG_PCI_NAMES is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_PPC_RTC is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="ip=on"
+
+#
+# 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_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM 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
+# CONFIG_BLK_STATS 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_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_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP 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
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_FTP=m
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_MAC=m
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_MATCH_TCPMSS=m
+# CONFIG_IP_NF_MATCH_HELPER is not set
+CONFIG_IP_NF_MATCH_STATE=m
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+CONFIG_IP_NF_MATCH_UNCLEAN=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_MIRROR=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_IP_NF_NAT_LOCAL is not set
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+CONFIG_IP_NF_NAT_FTP=m
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_IP_NF_TARGET_TCPMSS=m
+# CONFIG_IP_NF_ARPTABLES is not set
+CONFIG_IP_NF_COMPAT_IPCHAINS=m
+CONFIG_IP_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK 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 testing
+#
+# CONFIG_NET_PKTGEN 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
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 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_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_GMAC is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE 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_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+CONFIG_TULIP=y
+# 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
+CONFIG_EEPRO100=y
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# 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
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 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_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 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
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB 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
+
+#
+# Macintosh device drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+CONFIG_BUSMOUSE=y
+# CONFIG_ATIXL_BUSMOUSE is not set
+# CONFIG_LOGIBUSMOUSE is not set
+# CONFIG_MS_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_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
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 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
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 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_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_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 is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS 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
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG 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_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP 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
+# CONFIG_ZISOFS_FS 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
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_LOG_BUF_SHIFT=0
diff -urN linux-2.4.23-bk18/arch/ppc/configs/rpxcllf_defconfig linux-2.4.23-bk19/arch/ppc/configs/rpxcllf_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/rpxcllf_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/rpxcllf_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
CONFIG_HOTPLUG=y
#
diff -urN linux-2.4.23-bk18/arch/ppc/configs/rpxlite_defconfig linux-2.4.23-bk19/arch/ppc/configs/rpxlite_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/rpxlite_defconfig 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/rpxlite_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
CONFIG_HOTPLUG=y
#
diff -urN linux-2.4.23-bk18/arch/ppc/configs/sandpoint_defconfig linux-2.4.23-bk19/arch/ppc/configs/sandpoint_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/sandpoint_defconfig 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/sandpoint_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,720 @@
+#
+# Automatically generated make config: don't edit
+#
+# CONFIG_UID16 is not set
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_HAVE_DEC_LOCK=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_8260 is not set
+CONFIG_PPC_STD_MMU=y
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_LOPEC is not set
+CONFIG_SANDPOINT=y
+# CONFIG_PPLUS is not set
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+# CONFIG_MPC10X_STORE_GATHERING is not set
+CONFIG_EPIC_SERIAL_MODE=y
+CONFIG_GEN550=y
+# CONFIG_SMP is not set
+CONFIG_ALTIVEC=y
+CONFIG_TAU=y
+# CONFIG_TAU_INT is not set
+# CONFIG_TAU_AVERAGE is not set
+CONFIG_PPC_ISATIMER=y
+
+#
+# General setup
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_ISA is not set
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
+# CONFIG_PCI_NAMES is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+CONFIG_GEN_RTC=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,9600 ip=on"
+
+#
+# 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=m
+# 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_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM 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
+# CONFIG_BLK_STATS 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_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_DEV 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_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
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK 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 testing
+#
+# CONFIG_NET_PKTGEN 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_IDEDISK_STROKE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL 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_BLK_DEV_IDEPCI=y
+# CONFIG_BLK_DEV_GENERIC is not set
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_PCI_AUTO is not set
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_PCI_WIP is not set
+# CONFIG_BLK_DEV_ADMA100 is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_WDC_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_AMD74XX_OVERRIDE is not set
+CONFIG_BLK_DEV_CMD64X=y
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_HPT34X_AUTODMA is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_PDC202XX_BURST is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+CONFIG_BLK_DEV_SL82C105=y
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# 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
+# CONFIG_BLK_DEV_ATARAID_SII is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_SD_EXTRA_DEVS=40
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_SR_EXTRA_DEVS=2
+CONFIG_CHR_DEV_SG=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+CONFIG_SCSI_AIC7XXX=y
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_PROBE_EISA_VL is not set
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+# CONFIG_SCSI_AIC79XX 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
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_MEGARAID2 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 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_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_GMAC is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE 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_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+CONFIG_TULIP=y
+# 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
+CONFIG_EEPRO100=y
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# 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
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 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_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 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
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB 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
+
+#
+# Macintosh device drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+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_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
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 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
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 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_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_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 is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS 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
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG 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_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP 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
+# CONFIG_ZISOFS_FS 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
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_LOG_BUF_SHIFT=0
diff -urN linux-2.4.23-bk18/arch/ppc/configs/spruce_defconfig linux-2.4.23-bk19/arch/ppc/configs/spruce_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/spruce_defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/spruce_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -59,6 +59,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/walnut_defconfig linux-2.4.23-bk19/arch/ppc/configs/walnut_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/walnut_defconfig 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/walnut_defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/defconfig linux-2.4.23-bk19/arch/ppc/defconfig
--- linux-2.4.23-bk18/arch/ppc/defconfig 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/defconfig 2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
CONFIG_PCI_NAMES=y
CONFIG_HOTPLUG=y
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/Makefile linux-2.4.23-bk19/arch/ppc/kernel/Makefile
--- linux-2.4.23-bk18/arch/ppc/kernel/Makefile 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -64,6 +64,7 @@
obj-$(CONFIG_PPC4xx_DMA) += ppc4xx_dma.o
obj-$(CONFIG_PPC4xx_EDMA) += ppc4xx_sgdma.o
obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o
+obj-$(CONFIG_8xx_WDT) += m8xx_wdt.o
ifeq ($(CONFIG_8xx),y)
obj-$(CONFIG_PCI) += qspan_pci.o
ifndef CONFIG_MATH_EMULATION
@@ -79,6 +80,10 @@
obj-$(CONFIG_PAL4) += indirect_pci.o pci_auto.o todc_time.o
obj-$(CONFIG_PPLUS) += pplus_common.o open_pic.o i8259.o \
indirect_pci.o todc_time.o pci_auto.o
+obj-$(CONFIG_PRPMC750) += open_pic.o indirect_pci.o pci_auto.o \
+ pplus_common.o
+obj-$(CONFIG_SANDPOINT) += i8259.o open_pic.o mpc10x_common.o \
+ pci_auto.o indirect_pci.o todc_time.o
obj-$(CONFIG_SPRUCE) += indirect_pci.o pci_auto.o todc_time.o
obj-$(CONFIG_8260) += m8260_setup.o ppc8260_pic.o
obj-$(CONFIG_BOOTX_TEXT) += btext.o
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/m8xx_setup.c linux-2.4.23-bk19/arch/ppc/kernel/m8xx_setup.c
--- linux-2.4.23-bk18/arch/ppc/kernel/m8xx_setup.c 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/kernel/m8xx_setup.c 2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
extern unsigned long find_available_memory(void);
extern void m8xx_cpm_reset(uint);
+extern void m8xx_wdt_handler_install(bd_t *bp);
void __init
m8xx_setup_arch(void)
@@ -184,6 +185,13 @@
if (request_irq(DEC_INTERRUPT, timebase_interrupt, 0, "tbint",
NULL) != 0)
panic("Could not allocate timer IRQ!");
+
+#ifdef CONFIG_8xx_WDT
+ /* Install watchdog timer handler early because it might be
+ * already enabled by the bootloader
+ */
+ m8xx_wdt_handler_install(binfo);
+#endif
}
/* The RTC on the MPC8xx is an internal register.
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/m8xx_wdt.c linux-2.4.23-bk19/arch/ppc/kernel/m8xx_wdt.c
--- linux-2.4.23-bk18/arch/ppc/kernel/m8xx_wdt.c 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/m8xx_wdt.c 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,110 @@
+/*
+ * m8xx_wdt.c - MPC8xx watchdog driver
+ *
+ * Copyright (C) 2002 Florian Schirmer
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+
+static int wdt_timeout;
+
+void
+m8xx_wdt_reset(void)
+{
+ volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+ imap->im_siu_conf.sc_swsr = 0x556c; /* write magic1 */
+ imap->im_siu_conf.sc_swsr = 0xaa39; /* write magic2 */
+}
+
+static void
+m8xx_wdt_interrupt(int irq, void *dev, struct pt_regs *regs)
+{
+ volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+ m8xx_wdt_reset();
+
+ imap->im_sit.sit_piscr |= PISCR_PS; /* clear irq */
+}
+
+void __init
+m8xx_wdt_handler_install(bd_t * binfo)
+{
+ volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+ u32 pitc;
+ u32 sypcr;
+ u32 pitrtclk;
+
+ sypcr = imap->im_siu_conf.sc_sypcr;
+
+ if (!(sypcr & 0x04)) {
+ printk(KERN_NOTICE "m8xx_wdt: wdt disabled (SYPCR: 0x%08X)\n",
+ sypcr);
+ return;
+ }
+
+ m8xx_wdt_reset();
+
+ printk(KERN_NOTICE
+ "m8xx_wdt: active wdt found (SWTC: 0x%04X, SWP: 0x%01X)\n",
+ (sypcr >> 16), sypcr & 0x01);
+
+ wdt_timeout = (sypcr >> 16) & 0xFFFF;
+
+ if (!wdt_timeout)
+ wdt_timeout = 0xFFFF;
+
+ if (sypcr & 0x01)
+ wdt_timeout *= 2048;
+
+ /*
+ * Fire trigger if half of the wdt ticked down
+ */
+
+ if (imap->im_sit.sit_rtcsc & RTCSC_38K)
+ pitrtclk = 9600;
+ else
+ pitrtclk = 8192;
+
+ if ((wdt_timeout) > (UINT_MAX / pitrtclk))
+ pitc = wdt_timeout / binfo->bi_intfreq * pitrtclk / 2;
+ else
+ pitc = pitrtclk * wdt_timeout / binfo->bi_intfreq / 2;
+
+ imap->im_sit.sit_pitc = pitc << 16;
+ imap->im_sit.sit_piscr =
+ (mk_int_int_mask(PIT_INTERRUPT) << 8) | PISCR_PIE | PISCR_PTE;
+
+ if (request_irq(PIT_INTERRUPT, m8xx_wdt_interrupt, 0, "watchdog", NULL))
+ panic("m8xx_wdt: could not allocate watchdog irq!");
+
+ printk(KERN_NOTICE
+ "m8xx_wdt: keep-alive trigger installed (PITC: 0x%04X)\n", pitc);
+
+ wdt_timeout /= binfo->bi_intfreq;
+}
+
+int
+m8xx_wdt_get_timeout(void)
+{
+ return wdt_timeout;
+}
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/open_pic.c linux-2.4.23-bk19/arch/ppc/kernel/open_pic.c
--- linux-2.4.23-bk18/arch/ppc/kernel/open_pic.c 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/kernel/open_pic.c 2003-12-30 02:50:29.000000000 -0800
@@ -69,7 +69,6 @@
* These functions are not used but the code is kept here
* for completeness and future reference.
*/
-static void openpic_reset(void);
#ifdef notused
static void openpic_enable_8259_pass_through(void);
static u_int openpic_get_priority(void);
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/ppc_ksyms.c linux-2.4.23-bk19/arch/ppc/kernel/ppc_ksyms.c
--- linux-2.4.23-bk18/arch/ppc/kernel/ppc_ksyms.c 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/ppc_ksyms.c 2003-12-30 02:50:29.000000000 -0800
@@ -357,6 +357,12 @@
EXPORT_SYMBOL(cpm_free_handler);
EXPORT_SYMBOL(m8xx_cpm_hostalloc);
EXPORT_SYMBOL(m8xx_cpm_dpalloc);
+#ifdef CONFIG_8xx_WDT
+extern int m8xx_wdt_get_timeout(void);
+extern void m8xx_wdt_reset(void);
+EXPORT_SYMBOL(m8xx_wdt_get_timeout);
+EXPORT_SYMBOL(m8xx_wdt_reset);
+#endif
#endif /* CONFIG_8xx */
/* Those should really be inline */
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/setup.c linux-2.4.23-bk19/arch/ppc/kernel/setup.c
--- linux-2.4.23-bk18/arch/ppc/kernel/setup.c 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/setup.c 2003-12-30 02:50:29.000000000 -0800
@@ -157,7 +157,7 @@
lpj = loops_per_jiffy;
#endif
- seq_printf(m, "processor\t: %lu\n", i);
+ seq_printf(m, "processor\t: %u\n", i);
seq_printf(m, "cpu\t\t: ");
if (cur_cpu_spec[i]->pvr_mask)
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/Makefile linux-2.4.23-bk19/arch/ppc/platforms/Makefile
--- linux-2.4.23-bk18/arch/ppc/platforms/Makefile 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -53,6 +53,8 @@
obj-$(CONFIG_LOPEC) += lopec_setup.o lopec_pci.o
obj-$(CONFIG_PAL4) += pal4_setup.o pal4_pci.o cpc700_pic.o
obj-$(CONFIG_PPLUS) += pplus_pci.o pplus_setup.o
+obj-$(CONFIG_PRPMC750) += prpmc750.o
+obj-$(CONFIG_SANDPOINT) += sandpoint.o
obj-$(CONFIG_SPRUCE) += spruce_setup.o spruce_pci.o cpc700_pic.o
ifeq ($(CONFIG_SMP),y)
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ebony.c linux-2.4.23-bk19/arch/ppc/platforms/ebony.c
--- linux-2.4.23-bk18/arch/ppc/platforms/ebony.c 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ebony.c 2003-12-30 02:50:29.000000000 -0800
@@ -301,7 +301,7 @@
serial_req.baud_base = BASE_BAUD;
serial_req.port = 0;
serial_req.irq = 0;
- serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+ serial_req.flags = ASYNC_BOOT_AUTOCONF;
serial_req.io_type = SERIAL_IO_MEM;
serial_req.iomem_base = ioremap64(PPC440GP_UART0_ADDR, 8);
serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ebony.h linux-2.4.23-bk19/arch/ppc/platforms/ebony.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ebony.h 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ebony.h 2003-12-30 02:50:29.000000000 -0800
@@ -68,7 +68,7 @@
#define STD_UART_OP(num) \
{ 0, BASE_BAUD, 0, UART##num##_INT, \
- (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \
+ ASYNC_BOOT_AUTOCONF, \
iomem_base: UART##num##_IO_BASE, \
io_type: SERIAL_IO_MEM},
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/gemini_serial.h linux-2.4.23-bk19/arch/ppc/platforms/gemini_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/gemini_serial.h 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/gemini_serial.h 2003-12-30 02:50:29.000000000 -0800
@@ -15,11 +15,11 @@
#define BASE_BAUD (24576000 / 16)
#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST|ASYNC_AUTO_IRQ)
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF)
+#define STD_COM_FLAGS ASYNC_BOOT_AUTOCONF
+#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
#endif
#define STD_SERIAL_PORT_DEFNS \
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ibm405gp.h linux-2.4.23-bk19/arch/ppc/platforms/ibm405gp.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ibm405gp.h 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/ibm405gp.h 2003-12-30 02:50:29.000000000 -0800
@@ -108,7 +108,7 @@
#define STD_UART_OP(num) \
{ 0, BASE_BAUD, 0, UART##num##_INT, \
- (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \
+ ASYNC_BOOT_AUTOCONF, \
iomem_base: (u8 *)UART##num##_IO_BASE, \
io_type: SERIAL_IO_MEM},
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/lopec_serial.h linux-2.4.23-bk19/arch/ppc/platforms/lopec_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/lopec_serial.h 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/lopec_serial.h 2003-12-30 02:50:29.000000000 -0800
@@ -33,7 +33,7 @@
#define STD_UART_OP(num) \
{ 0, BASE_BAUD, UART##num##_PORT, UART##num##_INT, \
- (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST), \
+ ASYNC_BOOT_AUTOCONF, \
iomem_base: UART##num##_IO_BASE, \
io_type: SERIAL_IO_MEM },
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/lopec_setup.c linux-2.4.23-bk19/arch/ppc/platforms/lopec_setup.c
--- linux-2.4.23-bk18/arch/ppc/platforms/lopec_setup.c 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/lopec_setup.c 2003-12-30 02:50:29.000000000 -0800
@@ -299,7 +299,7 @@
serial_req.line = 0;
serial_req.baud_base = BASE_BAUD;
serial_req.irq = UART0_INT;
- serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+ serial_req.flags = ASYNC_BOOT_AUTOCONF;
serial_req.io_type = SERIAL_IO_MEM;
serial_req.iomem_base = ioremap(UART0_PORT, 8);
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ocotea.c linux-2.4.23-bk19/arch/ppc/platforms/ocotea.c
--- linux-2.4.23-bk18/arch/ppc/platforms/ocotea.c 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ocotea.c 2003-12-30 02:50:29.000000000 -0800
@@ -215,7 +215,7 @@
serial_req.baud_base = BASE_BAUD;
serial_req.port = 0;
serial_req.irq = 0;
- serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+ serial_req.flags = ASYNC_BOOT_AUTOCONF;
serial_req.io_type = SERIAL_IO_MEM;
serial_req.iomem_base = ioremap64(PPC440GX_UART0_ADDR, 8);
serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ocotea.h linux-2.4.23-bk19/arch/ppc/platforms/ocotea.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ocotea.h 2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ocotea.h 2003-12-30 02:50:29.000000000 -0800
@@ -58,7 +58,7 @@
#define BASE_BAUD 11059200/16
#define STD_UART_OP(num) \
{ 0, BASE_BAUD, 0, UART##num##_INT, \
- (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \
+ ASYNC_BOOT_AUTOCONF, \
iomem_base: UART##num##_IO_BASE, \
io_type: SERIAL_IO_MEM},
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/pal4_serial.h linux-2.4.23-bk19/arch/ppc/platforms/pal4_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/pal4_serial.h 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/pal4_serial.h 2003-12-30 02:50:29.000000000 -0800
@@ -20,19 +20,11 @@
#define RS_TABLE_SIZE 2
#define BASE_BAUD (33333333 / 4 / 16)
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST|ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF)
-#endif
-
#define SERIAL_PORT_DFNS \
- {0, BASE_BAUD, CPC700_SERIAL_1, 3, STD_COM_FLAGS, \
+ {0, BASE_BAUD, CPC700_SERIAL_1, 3, ASYNC_BOOT_AUTOCONF, \
iomem_base: (unsigned char *) CPC700_SERIAL_1, \
io_type: SERIAL_IO_MEM}, /* ttyS0 */ \
- {0, BASE_BAUD, CPC700_SERIAL_2, 4, STD_COM_FLAGS, \
+ {0, BASE_BAUD, CPC700_SERIAL_2, 4, ASYNC_BOOT_AUTOCONF, \
iomem_base: (unsigned char *) CPC700_SERIAL_2, \
io_type: SERIAL_IO_MEM}
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.c linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.c
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.c 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.c 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,392 @@
+/*
+ * arch/ppc/platforms/prpmc750_setup.c
+ *
+ * Board setup routines for Motorola PrPMC750
+ *
+ * Author: Matt Porter
+ *
+ * 2001-2003 (c) MontaVista, Software, Inc. This file is licensed under
+ * the terms of the GNU General Public License version 2. This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "prpmc750_serial.h"
+
+extern int mpic_init(void);
+extern unsigned long loops_per_jiffy;
+extern void gen550_progress(char *, unsigned short);
+
+static u_char prpmc750_openpic_initsenses[] __initdata =
+{
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT0 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UART */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_DEBUGINT */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HAWK_WDT */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_ABORT */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT1 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT2 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT3 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTA */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTB */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTC */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTD */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+};
+
+/*
+ * Motorola PrPMC750/PrPMC800 in PrPMCBASE or PrPMC-Carrier
+ * Combined irq tables. Only Base has IDSEL 14, only Carrier has 21 and 22.
+ */
+static inline int
+prpmc_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+ static char pci_irq_table[][4] =
+ /*
+ * PCI IDSEL/INTPIN->INTLINE
+ * A B C D
+ */
+ {
+ {12, 0, 0, 0}, /* IDSEL 14 - Ethernet, base */
+ {0, 0, 0, 0}, /* IDSEL 15 - unused */
+ {10, 11, 12, 9}, /* IDSEL 16 - PMC A1, PMC1 */
+ {10, 11, 12, 9}, /* IDSEL 17 - PrPMC-A-B, PMC2-B */
+ {11, 12, 9, 10}, /* IDSEL 18 - PMC A1-B, PMC1-B */
+ {0, 0, 0, 0}, /* IDSEL 19 - unused */
+ {9, 10, 11, 12}, /* IDSEL 20 - P2P Bridge */
+ {11, 12, 9, 10}, /* IDSEL 21 - PMC A2, carrier */
+ {12, 9, 10, 11}, /* IDSEL 22 - PMC A2-B, carrier */
+ };
+ const long min_idsel = 14, max_idsel = 22, irqs_per_slot = 4;
+ return PCI_IRQ_TABLE_LOOKUP;
+};
+
+static void __init
+prpmc750_pcibios_fixup(void)
+{
+ struct pci_dev *dev;
+ unsigned short wtmp;
+
+ /*
+ * Kludge to clean up after PPC6BUG which doesn't
+ * configure the CL5446 VGA card. Also the
+ * resource subsystem doesn't fixup the
+ * PCI mem resources on the CL5446.
+ */
+ if ((dev = pci_find_device(PCI_VENDOR_ID_CIRRUS,
+ PCI_DEVICE_ID_CIRRUS_5446, 0)))
+ {
+ dev->resource[0].start += PRPMC750_PCI_PHY_MEM_BASE;
+ dev->resource[0].end += PRPMC750_PCI_PHY_MEM_BASE;
+ pci_read_config_word(dev,
+ PCI_COMMAND,
+ &wtmp);
+ pci_write_config_word(dev,
+ PCI_COMMAND,
+ wtmp|3);
+ /* Enable Color mode in MISC reg */
+ outb(0x03, 0x3c2);
+ /* Select DRAM config reg */
+ outb(0x0f, 0x3c4);
+ /* Set proper DRAM config */
+ outb(0xdf, 0x3c5);
+ }
+}
+
+static void __init
+prpmc750_find_bridges(void)
+{
+ struct pci_controller* hose;
+
+ hose = pcibios_alloc_controller();
+ if (!hose)
+ return;
+
+ hose->first_busno = 0;
+ hose->last_busno = 0xff;
+ hose->pci_mem_offset = PRPMC750_PCI_PHY_MEM_BASE;
+
+ pci_init_resource(&hose->io_resource,
+ PRPMC750_PCI_LOWER_IO,
+ PRPMC750_PCI_UPPER_IO,
+ IORESOURCE_IO,
+ "PCI host bridge");
+
+ pci_init_resource(&hose->mem_resources[0],
+ PRPMC750_PCI_LOWER_MEM + PRPMC750_PCI_PHY_MEM_BASE,
+ PRPMC750_PCI_UPPER_MEM + PRPMC750_PCI_PHY_MEM_BASE,
+ IORESOURCE_MEM,
+ "PCI host bridge");
+
+ hose->io_space.start = PRPMC750_PCI_LOWER_IO;
+ hose->io_space.end = PRPMC750_PCI_UPPER_IO;
+ hose->mem_space.start = PRPMC750_PCI_LOWER_MEM;
+ hose->mem_space.end = PRPMC750_PCI_UPPER_MEM_AUTO;
+
+ hose->io_base_virt = (void *)PRPMC750_ISA_IO_BASE;
+
+ setup_indirect_pci(hose,
+ PRPMC750_PCI_CONFIG_ADDR,
+ PRPMC750_PCI_CONFIG_DATA);
+
+ /*
+ * Disable MPIC response to PCI I/O space (BAR 0).
+ * Make MPIC respond to PCI Mem space at specified address.
+ * (BAR 1).
+ */
+ early_write_config_dword(hose,
+ 0,
+ PCI_DEVFN(0,0),
+ PCI_BASE_ADDRESS_0,
+ 0x00000000 | 0x1);
+
+ early_write_config_dword(hose,
+ 0,
+ PCI_DEVFN(0,0),
+ PCI_BASE_ADDRESS_1,
+ (PRPMC750_HAWK_MPIC_BASE -
+ PRPMC750_PCI_MEM_OFFSET) | 0x0);
+
+ hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+ ppc_md.pcibios_fixup = prpmc750_pcibios_fixup;
+ ppc_md.pci_swizzle = common_swizzle;
+ ppc_md.pci_map_irq = prpmc_map_irq;
+}
+
+static int
+prpmc750_show_cpuinfo(struct seq_file *m)
+{
+ seq_printf(m, "machine\t\t: PrPMC750\n");
+
+ return 0;
+}
+
+static void __init
+prpmc750_setup_arch(void)
+{
+ /* init to some ~sane value until calibrate_delay() runs */
+ loops_per_jiffy = 50000000/HZ;
+
+ /* Lookup PCI host bridges */
+ prpmc750_find_bridges();
+
+#ifdef CONFIG_BLK_DEV_INITRD
+ if (initrd_start)
+ ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); /* /dev/ram */
+ else
+#endif
+#ifdef CONFIG_ROOT_NFS
+ ROOT_DEV = to_kdev_t(0x00ff); /* /dev/nfs pseudo device */
+#else
+ ROOT_DEV = to_kdev_t(0x0802); /* /dev/sda2 */
+#endif
+
+#ifdef CONFIG_DUMMY_CONSOLE
+ conswitchp = &dummy_con;
+#endif
+
+ /* Find and map our OpenPIC */
+ pplus_mpic_init(PRPMC750_PCI_MEM_OFFSET);
+ OpenPIC_InitSenses = prpmc750_openpic_initsenses;
+ OpenPIC_NumInitSenses = sizeof(prpmc750_openpic_initsenses);
+}
+
+/*
+ * Compute the PrPMC750's bus speed using the baud clock as a
+ * reference.
+ */
+static unsigned long __init
+prpmc750_get_bus_speed(void)
+{
+ unsigned long tbl_start, tbl_end;
+ unsigned long current_state, old_state, bus_speed;
+ unsigned char lcr, dll, dlm;
+ int baud_divisor, count;
+
+ /* Read the UART's baud clock divisor */
+ lcr = readb(PRPMC750_SERIAL_0_LCR);
+ writeb(lcr | UART_LCR_DLAB, PRPMC750_SERIAL_0_LCR);
+ dll = readb(PRPMC750_SERIAL_0_DLL);
+ dlm = readb(PRPMC750_SERIAL_0_DLM);
+ writeb(lcr & ~UART_LCR_DLAB, PRPMC750_SERIAL_0_LCR);
+ baud_divisor = (dlm << 8) | dll;
+
+ /*
+ * Use the baud clock divisor and base baud clock
+ * to determine the baud rate and use that as
+ * the number of baud clock edges we use for
+ * the time base sample. Make it half the baud
+ * rate.
+ */
+ count = PRPMC750_BASE_BAUD / (baud_divisor * 16);
+
+ /* Find the first edge of the baud clock */
+ old_state = readb(PRPMC750_STATUS_REG) & PRPMC750_BAUDOUT_MASK;
+ do {
+ current_state = readb(PRPMC750_STATUS_REG) &
+ PRPMC750_BAUDOUT_MASK;
+ } while(old_state == current_state);
+
+ old_state = current_state;
+
+ /* Get the starting time base value */
+ tbl_start = get_tbl();
+
+ /*
+ * Loop until we have found a number of edges equal
+ * to half the count (half the baud rate)
+ */
+ do {
+ do {
+ current_state = readb(PRPMC750_STATUS_REG) &
+ PRPMC750_BAUDOUT_MASK;
+ } while(old_state == current_state);
+ old_state = current_state;
+ } while (--count);
+
+ /* Get the ending time base value */
+ tbl_end = get_tbl();
+
+ /* Compute bus speed */
+ bus_speed = (tbl_end-tbl_start)*128;
+
+ return bus_speed;
+}
+
+static void __init
+prpmc750_calibrate_decr(void)
+{
+ unsigned long freq;
+ int divisor = 4;
+
+ freq = prpmc750_get_bus_speed();
+
+ tb_ticks_per_jiffy = freq / (HZ * divisor);
+ tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+}
+
+static void
+prpmc750_restart(char *cmd)
+{
+ __cli();
+ writeb(PRPMC750_MODRST_MASK, PRPMC750_MODRST_REG);
+ while(1);
+}
+
+static void
+prpmc750_halt(void)
+{
+ __cli();
+ while (1);
+}
+
+static void
+prpmc750_power_off(void)
+{
+ prpmc750_halt();
+}
+
+static void __init
+prpmc750_init_IRQ(void)
+{
+ openpic_init(0);
+}
+
+/*
+ * Set BAT 3 to map 0xf0000000 to end of physical memory space.
+ */
+static __inline__ void
+prpmc750_set_bat(void)
+{
+ mb();
+ mtspr(DBAT1U, 0xf0001ffe);
+ mtspr(DBAT1L, 0xf000002a);
+ mb();
+}
+
+/*
+ * We need to read the Falcon/Hawk memory controller
+ * to properly determine this value
+ */
+static unsigned long __init
+prpmc750_find_end_of_memory(void)
+{
+ /* Read the memory size from the Hawk SMC */
+ return pplus_get_mem_size(PRPMC750_HAWK_SMC_BASE);
+}
+
+static void __init
+prpmc750_map_io(void)
+{
+ io_block_mapping(0x80000000, 0x80000000, 0x10000000, _PAGE_IO);
+ io_block_mapping(0xf0000000, 0xc0000000, 0x08000000, _PAGE_IO);
+ io_block_mapping(0xf8000000, 0xf8000000, 0x08000000, _PAGE_IO);
+}
+
+void __init
+platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+ unsigned long r6, unsigned long r7)
+{
+ parse_bootinfo(find_bootinfo());
+
+ isa_io_base = PRPMC750_ISA_IO_BASE;
+ isa_mem_base = PRPMC750_ISA_MEM_BASE;
+ pci_dram_offset = PRPMC750_SYS_MEM_BASE;
+
+ prpmc750_set_bat();
+
+ ppc_md.setup_arch = prpmc750_setup_arch;
+ ppc_md.show_cpuinfo = prpmc750_show_cpuinfo;
+ ppc_md.init_IRQ = prpmc750_init_IRQ;
+ ppc_md.get_irq = openpic_get_irq;
+
+ ppc_md.find_end_of_memory = prpmc750_find_end_of_memory;
+ ppc_md.setup_io_mappings = prpmc750_map_io;
+
+ ppc_md.restart = prpmc750_restart;
+ ppc_md.power_off = prpmc750_power_off;
+ ppc_md.halt = prpmc750_halt;
+
+ /* PrPMC750 has no timekeeper part */
+ ppc_md.time_init = NULL;
+ ppc_md.get_rtc_time = NULL;
+ ppc_md.set_rtc_time = NULL;
+ ppc_md.calibrate_decr = prpmc750_calibrate_decr;
+
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
+ ppc_md.progress = gen550_progress;
+#endif /* CONFIG_SERIAL_TEXT_DEBUG */
+}
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.h linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.h
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.h 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.h 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,65 @@
+/*
+ * include/asm-ppc/platforms/prpmc750.h
+ *
+ * Definitions for Motorola PrPMC750 board support
+ *
+ * Author: Matt Porter
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * 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.
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_PRPMC750_H__
+#define __ASM_PRPMC750_H__
+
+#include
+
+#define PRPMC750_PCI_CONFIG_ADDR 0x80000cf8
+#define PRPMC750_PCI_CONFIG_DATA 0x80000cfc
+
+#define PRPMC750_PCI_PHY_MEM_BASE 0xc0000000
+#define PRPMC750_PCI_MEM_BASE 0xf0000000
+#define PRPMC750_PCI_IO_BASE 0x80000000
+
+#define PRPMC750_ISA_IO_BASE PRPMC750_PCI_IO_BASE
+#define PRPMC750_ISA_MEM_BASE PRPMC750_PCI_MEM_BASE
+#define PRPMC750_PCI_MEM_OFFSET PRPMC750_PCI_PHY_MEM_BASE
+
+#define PRPMC750_SYS_MEM_BASE 0x80000000
+
+#define PRPMC750_PCI_LOWER_MEM 0x00000000
+#define PRPMC750_PCI_UPPER_MEM_AUTO 0x3bf7ffff
+#define PRPMC750_PCI_UPPER_MEM 0x3bffffff
+#define PRPMC750_PCI_LOWER_IO 0x00000000
+#define PRPMC750_PCI_UPPER_IO 0x0ff7ffff
+
+#define PRPMC750_HAWK_MPIC_BASE 0xfbf80000
+#define PRPMC750_HAWK_SMC_BASE 0xfef80000
+
+#define PRPMC750_BASE_BAUD 1843200
+#define PRPMC750_SERIAL_0 0xfef88000
+#define PRPMC750_SERIAL_0_DLL (PRPMC750_SERIAL_0 + (UART_DLL << 4))
+#define PRPMC750_SERIAL_0_DLM (PRPMC750_SERIAL_0 + (UART_DLM << 4))
+#define PRPMC750_SERIAL_0_LCR (PRPMC750_SERIAL_0 + (UART_LCR << 4))
+
+#define PRPMC750_STATUS_REG 0xfef88080
+#define PRPMC750_BAUDOUT_MASK 0x02
+#define PRPMC750_MONARCH_MASK 0x01
+
+#define PRPMC750_MODRST_REG 0xfef880a0
+#define PRPMC750_MODRST_MASK 0x01
+
+#define PRPMC750_PIRQ_REG 0xfef880b0
+#define PRPMC750_SEL1_MASK 0x02
+#define PRPMC750_SEL0_MASK 0x01
+
+#define PRPMC750_TBEN_REG 0xfef880c0
+#define PRPMC750_TBEN_MASK 0x01
+
+#endif /* __ASM_PRPMC750_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750_serial.h linux-2.4.23-bk19/arch/ppc/platforms/prpmc750_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750_serial.h 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750_serial.h 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,39 @@
+/*
+ * include/asm-ppc/platforms/prpmc750_serial.h
+ *
+ * Motorola PrPMC750 serial support
+ *
+ * Author: Matt Porter
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * 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.
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_PRPMC750_SERIAL_H__
+#define __ASM_PRPMC750_SERIAL_H__
+
+#include
+#include
+
+#define RS_TABLE_SIZE 4
+
+/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
+#define BASE_BAUD (PRPMC750_BASE_BAUD / 16)
+
+#ifndef SERIAL_MAGIC_KEY
+#define kernel_debugger ppc_kernel_debug
+#endif
+
+#define SERIAL_PORT_DFNS \
+ { 0, BASE_BAUD, PRPMC750_SERIAL_0, 1, ASYNC_SKIP_TEST, \
+ iomem_base: (unsigned char *)PRPMC750_SERIAL_0, \
+ iomem_reg_shift: 4, \
+ io_type: SERIAL_IO_MEM } /* ttyS0 */
+
+#endif /* __ASM_PRPMC750_SERIAL_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/sandpoint.c linux-2.4.23-bk19/arch/ppc/platforms/sandpoint.c
--- linux-2.4.23-bk18/arch/ppc/platforms/sandpoint.c 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/sandpoint.c 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,742 @@
+/*
+ * arch/ppc/platforms/sandpoint.c
+ *
+ * Board setup routines for the Motorola SPS Sandpoint Test Platform.
+ *
+ * Author: Mark A. Greer
+ * mgreer@mvista.com
+ *
+ * 2000-2003 (c) MontaVista, Software, Inc. This file is licensed under
+ * the terms of the GNU General Public License version 2. This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+/*
+ * This file adds support for the Motorola SPS Sandpoint Test Platform.
+ * These boards have a PPMC slot for the processor so any combination
+ * of cpu and host bridge can be attached. This port is for an 8240 PPMC
+ * module from Motorola SPS and other closely related cpu/host bridge
+ * combinations (e.g., 750/755/7400 with MPC107 host bridge).
+ * The sandpoint itself has a Windbond 83c553 (PCI-ISA bridge, 2 DMA ctlrs, 2
+ * cascaded 8259 interrupt ctlrs, 8254 Timer/Counter, and an IDE ctlr), a
+ * National 87308 (RTC, 2 UARTs, Keyboard & mouse ctlrs, and a floppy ctlr),
+ * and 4 PCI slots (only 2 of which are usable; the other 2 are keyed for 3.3V
+ * but are really 5V).
+ *
+ * The firmware on the sandpoint is called DINK (not my acronym :). This port
+ * depends on DINK to do some basic initialization (e.g., initialize the memory
+ * ctlr) and to ensure that the processor is using MAP B (CHRP map).
+ *
+ * The switch settings for the Sandpoint board MUST be as follows:
+ * S3: down
+ * S4: up
+ * S5: up
+ * S6: down
+ *
+ * 'down' is in the direction from the PCI slots towards the PPMC slot;
+ * 'up' is in the direction from the PPMC slot towards the PCI slots.
+ * Be careful, the way the sandpoint board is installed in XT chasses will
+ * make the directions reversed.
+ *
+ * Since Motorola listened to our suggestions for improvement, we now have
+ * the Sandpoint X3 board. All of the PCI slots are available, it uses
+ * the serial interrupt interface (just a hardware thing we need to
+ * configure properly).
+ *
+ * Use the default X3 switch settings. The interrupts are then:
+ * EPIC Source
+ * 0 SIOINT (8259, active low)
+ * 1 PCI #1
+ * 2 PCI #2
+ * 3 PCI #3
+ * 4 PCI #4
+ * 7 Winbond INTC (IDE interrupt)
+ * 8 Winbond INTD (IDE interrupt)
+ *
+ * It is important to note that this code only supports the Sandpoint X3
+ * (all flavors) platform, and it does not support the X2 anymore. Code
+ * that at one time worked on the X2 can be found at:
+ * ftp://source.mvista.com/pub/linuxppc/obsolete/sandpoint/
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "sandpoint_serial.h"
+
+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);
+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 void gen550_progress(char *, unsigned short);
+extern void gen550_init(int, struct serial_struct *);
+
+unsigned char __res[sizeof (bd_t)];
+
+static void sandpoint_halt(void);
+
+/*
+ * Define all of the IRQ senses and polarities. Taken from the
+ * Sandpoint X3 User's manual.
+ */
+static u_char sandpoint_openpic_initsenses[] __initdata = {
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 0: SIOINT */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 2: PCI Slot 1 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 3: PCI Slot 2 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 4: PCI Slot 3 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 5: PCI Slot 4 */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 8: IDE (INT C) */
+ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE) /* 9: IDE (INT D) */
+};
+
+/*
+ * Motorola SPS Sandpoint interrupt routing.
+ */
+static inline int
+sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+ static char pci_irq_table[][4] =
+ /*
+ * PCI IDSEL/INTPIN->INTLINE
+ * A B C D
+ */
+ {
+ {16, 0, 0, 0}, /* IDSEL 11 - i8259 on Windbond */
+ { 0, 0, 0, 0}, /* IDSEL 12 - unused */
+ {17, 18, 19, 20}, /* IDSEL 13 - PCI slot 1 */
+ {18, 19, 20, 17}, /* IDSEL 14 - PCI slot 2 */
+ {19, 20, 17, 18}, /* IDSEL 15 - PCI slot 3 */
+ {20, 17, 18, 19}, /* IDSEL 16 - PCI slot 4 */
+ };
+
+ const long min_idsel = 11, max_idsel = 16, irqs_per_slot = 4;
+ return PCI_IRQ_TABLE_LOOKUP;
+}
+
+static void __init
+sandpoint_setup_winbond_83553(struct pci_controller *hose)
+{
+ int devfn;
+
+ /*
+ * Route IDE interrupts directly to the 8259's IRQ 14 & 15.
+ * We can't route the IDE interrupt to PCI INTC# or INTD# because those
+ * woule interfere with the PMC's INTC# and INTD# lines.
+ */
+ /*
+ * Winbond Fcn 0
+ */
+ devfn = PCI_DEVFN(11, 0);
+
+ /* IDE Interrupt Routing Control */
+ early_write_config_byte(hose, 0, devfn, 0x43, 0xef);
+
+ /* PCI Interrupt Routing Control */
+ early_write_config_word(hose, 0, devfn, 0x44, 0x0000);
+
+ /* Want ISA memory cycles to be forwarded to PCI bus.
+ * ISA-to-PCI Addr Decoder Control.
+ */
+ early_write_config_byte(hose, 0, devfn, 0x48, 0xf0);
+
+ /* Enable RTC and Keyboard address locations. */
+ early_write_config_byte(hose, 0, devfn, 0x4d, 0x00);
+
+ /* Enable Port 92. */
+ early_write_config_byte(hose, 0, devfn, 0x4e, 0x06);
+
+ /*
+ * Winbond Fcn 1
+ */
+ devfn = PCI_DEVFN(11, 1);
+
+ /* Put IDE controller into native mode (via PIR). */
+ early_write_config_byte(hose, 0, devfn, 0x09, 0x8f);
+
+ /* Init IRQ routing, enable both ports, disable fast 16, via
+ * IDE Control/Status Register.
+ */
+ early_write_config_dword(hose, 0, devfn, 0x40, 0x00ff0011);
+}
+
+static void __init
+sandpoint_find_bridges(void)
+{
+ struct pci_controller *hose;
+
+ hose = pcibios_alloc_controller();
+
+ if (!hose)
+ return;
+
+ hose->first_busno = 0;
+ hose->last_busno = 0xff;
+
+ if (mpc10x_bridge_init(hose,
+ MPC10X_MEM_MAP_B,
+ MPC10X_MEM_MAP_B, MPC10X_MAPB_EUMB_BASE) == 0) {
+
+ /* Do early winbond init, then scan PCI bus */
+ sandpoint_setup_winbond_83553(hose);
+ hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+ ppc_md.pcibios_fixup = NULL;
+ ppc_md.pcibios_fixup_bus = NULL;
+ ppc_md.pci_swizzle = common_swizzle;
+ ppc_md.pci_map_irq = sandpoint_map_irq;
+ } else {
+ if (ppc_md.progress)
+ ppc_md.progress("Bridge init failed", 0x100);
+ printk("Host bridge init failed\n");
+ }
+
+ return;
+}
+
+#ifdef CONFIG_SERIAL
+static void __init
+sandpoint_early_serial_map(void)
+{
+ struct serial_struct serial_req;
+
+ /* Setup serial port access */
+ memset(&serial_req, 0, sizeof (serial_req));
+ serial_req.baud_base = BASE_BAUD;
+ serial_req.line = 0;
+ serial_req.port = 0;
+ serial_req.irq = 4;
+ serial_req.flags = ASYNC_BOOT_AUTOCONF;
+ serial_req.io_type = SERIAL_IO_MEM;
+ serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_0;
+ serial_req.iomem_reg_shift = 0;
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+ gen550_init(0, &serial_req);
+#endif
+
+ if (early_serial_setup(&serial_req) != 0)
+ printk("Early serial init of port 0 failed\n");
+
+ /* Assume early_serial_setup() doesn't modify serial_req */
+ serial_req.line = 1;
+ serial_req.port = 1;
+ serial_req.irq = 3; /* XXXX */
+ serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_1;
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+ gen550_init(1, &serial_req);
+#endif
+
+ if (early_serial_setup(&serial_req) != 0)
+ printk("Early serial init of port 1 failed\n");
+}
+#endif
+
+static void __init
+sandpoint_setup_arch(void)
+{
+ loops_per_jiffy = 100000000 / HZ;
+
+#ifdef CONFIG_BLK_DEV_INITRD
+ if (initrd_start)
+ ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
+ else
+#endif
+#ifdef CONFIG_ROOT_NFS
+ ROOT_DEV = to_kdev_t(0x00FF); /* /dev/nfs pseudo device */
+#else
+ ROOT_DEV = to_kdev_t(0x0301); /* /dev/hda1 IDE disk */
+#endif
+
+ /* Lookup PCI host bridges */
+ sandpoint_find_bridges();
+
+#ifdef CONFIG_SERIAL
+ sandpoint_early_serial_map();
+#endif
+
+#ifdef CONFIG_DUMMY_CONSOLE
+ conswitchp = &dummy_con;
+#endif
+
+ printk(KERN_INFO "Motorola SPS Sandpoint Test Platform\n");
+
+ /* DINK32 12.3 and below do not correctly enable any caches.
+ * We will do this now with good known values. Future versions
+ * of DINK32 are supposed to get this correct.
+ */
+ if (cur_cpu_spec[0]->cpu_features & CPU_FTR_SPEC7450)
+ /* 745x is different. We only want to pass along enable. */
+ _set_L2CR(L2CR_L2E);
+ else if (cur_cpu_spec[0]->cpu_features & CPU_FTR_L2CR)
+ /* All modules have 1MB of L2. We also assume that an
+ * L2 divisor of 3 will work.
+ */
+ _set_L2CR(L2CR_L2E | L2CR_L2SIZ_1MB | L2CR_L2CLK_DIV3
+ | L2CR_L2RAM_PIPE | L2CR_L2OH_1_0 | L2CR_L2DF);
+#if 0
+ /* Untested right now. */
+ if (cur_cpu_spec[0]->cpu_features & CPU_FTR_L3CR) {
+ /* Magic value. */
+ _set_L3CR(0x8f032000);
+ }
+#endif
+}
+
+#define SANDPOINT_87308_CFG_ADDR 0x15c
+#define SANDPOINT_87308_CFG_DATA 0x15d
+
+#define SANDPOINT_87308_CFG_INB(addr, byte) { \
+ outb((addr), SANDPOINT_87308_CFG_ADDR); \
+ (byte) = inb(SANDPOINT_87308_CFG_DATA); \
+}
+
+#define SANDPOINT_87308_CFG_OUTB(addr, byte) { \
+ outb((addr), SANDPOINT_87308_CFG_ADDR); \
+ outb((byte), SANDPOINT_87308_CFG_DATA); \
+}
+
+#define SANDPOINT_87308_SELECT_DEV(dev_num) { \
+ SANDPOINT_87308_CFG_OUTB(0x07, (dev_num)); \
+}
+
+#define SANDPOINT_87308_DEV_ENABLE(dev_num) { \
+ SANDPOINT_87308_SELECT_DEV(dev_num); \
+ SANDPOINT_87308_CFG_OUTB(0x30, 0x01); \
+}
+
+/*
+ * Initialize the ISA devices on the Nat'l PC87308VUL SuperIO chip.
+ */
+static void __init
+sandpoint_setup_natl_87308(void)
+{
+ u_char reg;
+
+ /*
+ * Enable all the devices on the Super I/O chip.
+ */
+ SANDPOINT_87308_SELECT_DEV(0x00); /* Select kbd logical device */
+ SANDPOINT_87308_CFG_OUTB(0xf0, 0x00); /* Set KBC clock to 8 Mhz */
+ SANDPOINT_87308_DEV_ENABLE(0x00); /* Enable keyboard */
+ SANDPOINT_87308_DEV_ENABLE(0x01); /* Enable mouse */
+ SANDPOINT_87308_DEV_ENABLE(0x02); /* Enable rtc */
+ SANDPOINT_87308_DEV_ENABLE(0x03); /* Enable fdc (floppy) */
+ SANDPOINT_87308_DEV_ENABLE(0x04); /* Enable parallel */
+ SANDPOINT_87308_DEV_ENABLE(0x05); /* Enable UART 2 */
+ SANDPOINT_87308_CFG_OUTB(0xf0, 0x82); /* Enable bank select regs */
+ SANDPOINT_87308_DEV_ENABLE(0x06); /* Enable UART 1 */
+ SANDPOINT_87308_CFG_OUTB(0xf0, 0x82); /* Enable bank select regs */
+
+ /* Set up floppy in PS/2 mode */
+ outb(0x09, SIO_CONFIG_RA);
+ reg = inb(SIO_CONFIG_RD);
+ reg = (reg & 0x3F) | 0x40;
+ outb(reg, SIO_CONFIG_RD);
+ outb(reg, SIO_CONFIG_RD); /* Have to write twice to change! */
+
+ return;
+}
+
+/*
+ * Fix IDE interrupts.
+ */
+static void __init
+sandpoint_fix_winbond_83553(void)
+{
+ /* Make all 8259 interrupt level sensitive */
+ outb(0xf8, 0x4d0);
+ outb(0xde, 0x4d1);
+
+ return;
+}
+
+static void __init
+sandpoint_init2(void)
+{
+ /* Do Sandpoint board specific initialization. */
+ sandpoint_fix_winbond_83553();
+ sandpoint_setup_natl_87308();
+
+ request_region(0x00, 0x20, "dma1");
+ request_region(0x20, 0x20, "pic1");
+ request_region(0x40, 0x20, "timer");
+ request_region(0x80, 0x10, "dma page reg");
+ request_region(0xa0, 0x20, "pic2");
+ request_region(0xc0, 0x20, "dma2");
+
+ return;
+}
+
+/*
+ * Interrupt setup and service. The i8259 is cascaded from EPIC IRQ0,
+ * IRQ1-4 map to PCI slots 1-4, IDE is on EPIC 7 and 8.
+ */
+static void __init
+sandpoint_init_IRQ(void)
+{
+ int i;
+
+ OpenPIC_InitSenses = sandpoint_openpic_initsenses;
+ OpenPIC_NumInitSenses = sizeof (sandpoint_openpic_initsenses);
+
+ /*
+ * We need to tell openpic_set_sources where things actually are.
+ * mpc10x_common will setup OpenPIC_Addr at ioremap(EUMB phys base +
+ * EPIC offset (0x40000)); The EPIC IRQ Register Address Map -
+ * Interrupt Source Configuration Registers gives these numbers
+ * as offsets starting at 0x50200, we need to adjust occordinly.
+ */
+
+ /* Map serial interrupt 0 */
+ openpic_set_sources(0, 1, OpenPIC_Addr + 0x10200);
+ /* Map serial interrupts 2-5 */
+ openpic_set_sources(1, 4, OpenPIC_Addr + 0x10240);
+ /* Map serial interrupts 8-9 */
+ openpic_set_sources(5, 2, OpenPIC_Addr + 0x10300);
+ /* Skip reserved space and map i2c and DMA Ch[01] */
+ openpic_set_sources(7, 3, OpenPIC_Addr + 0x11020);
+ /* Skip reserved space and map Message Unit Interrupt (I2O) */
+ openpic_set_sources(10, 1, OpenPIC_Addr + 0x110C0);
+
+ openpic_init(NUM_8259_INTERRUPTS);
+ /* The cascade is on EPIC IRQ 0 (Linux IRQ 16). */
+ openpic_hookup_cascade(16, "8259 cascade to EPIC", &i8259_irq);
+
+ /*
+ * openpic_init() has set up irq_desc[0-23] to be openpic
+ * interrupts. We need to set irq_desc[0-15] to be 8259 interrupts.
+ * We then need to request and enable the 8259 irq.
+ */
+ for (i = 0; i < NUM_8259_INTERRUPTS; i++)
+ irq_desc[i].handler = &i8259_pic;
+
+ /*
+ * The EPIC allows for a read in the range of 0xFEF00000 ->
+ * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction.
+ */
+ i8259_init(0xfef00000);
+}
+
+static u32
+sandpoint_irq_cannonicalize(u32 irq)
+{
+ if (irq == 2)
+ return 9;
+ else
+ return irq;
+}
+
+static unsigned long __init
+sandpoint_find_end_of_memory(void)
+{
+ bd_t *bp = (bd_t *) __res;
+
+ if (bp->bi_memsize)
+ return bp->bi_memsize;
+
+ /* This might be fixed in DINK32 12.4, or we'll have another
+ * way to determine the correct memory size anyhow. */
+ /* return mpc10x_get_mem_size(MPC10X_MEM_MAP_B); */
+ return 32 * 1024 * 1024;
+}
+
+static void __init
+sandpoint_map_io(void)
+{
+ io_block_mapping(0xfe000000, 0xfe000000, 0x02000000, _PAGE_IO);
+}
+
+static void
+sandpoint_restart(char *cmd)
+{
+ __cli();
+
+ /* Set exception prefix high - to the firmware */
+ _nmask_and_or_msr(0, MSR_IP);
+
+ /* Reset system via Port 92 */
+ outb(0x00, 0x92);
+ outb(0x01, 0x92);
+ for (;;) ; /* Spin until reset happens */
+}
+
+static void
+sandpoint_power_off(void)
+{
+ __cli();
+ for (;;) ; /* No way to shut power off with software */
+ /* NOTREACHED */
+}
+
+static void
+sandpoint_halt(void)
+{
+ sandpoint_power_off();
+ /* NOTREACHED */
+}
+
+static int
+sandpoint_show_cpuinfo(struct seq_file *m)
+{
+ seq_printf(m, "vendor\t\t: Motorola SPS\n");
+ seq_printf(m, "machine\t\t: Sandpoint\n");
+
+ return 0;
+}
+
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
+/*
+ * IDE support.
+ */
+static int sandpoint_ide_ports_known = 0;
+static ide_ioreg_t sandpoint_ide_regbase[MAX_HWIFS];
+static ide_ioreg_t sandpoint_ide_ctl_regbase[MAX_HWIFS];
+static ide_ioreg_t sandpoint_idedma_regbase;
+
+static void
+sandpoint_ide_probe(void)
+{
+ struct pci_dev *pdev = pci_find_device(PCI_VENDOR_ID_WINBOND,
+ PCI_DEVICE_ID_WINBOND_82C105,
+ NULL);
+
+ if (pdev) {
+ sandpoint_ide_regbase[0] = pdev->resource[0].start;
+ sandpoint_ide_regbase[1] = pdev->resource[2].start;
+ sandpoint_ide_ctl_regbase[0] = pdev->resource[1].start;
+ sandpoint_ide_ctl_regbase[1] = pdev->resource[3].start;
+ sandpoint_idedma_regbase = pdev->resource[4].start;
+ }
+
+ sandpoint_ide_ports_known = 1;
+ return;
+}
+
+/* The Sandpoint X3 allows the IDE interrupt to be directly connected
+ * from the Windbond (PCI INTC or INTD) to the serial EPIC. Someday
+ * we should try this, but it was easier to use the existing 83c553
+ * initialization than change it to route the different interrupts :-).
+ * -- Dan
+ */
+#if 0
+#define SANDPOINT_IDE_INT0 23 /* EPIC 7 */
+#define SANDPOINT_IDE_INT1 24 /* EPIC 8 */
+#else
+#define SANDPOINT_IDE_INT0 14 /* 8259 Test */
+#define SANDPOINT_IDE_INT1 15 /* 8259 Test */
+#endif
+static int
+sandpoint_ide_default_irq(ide_ioreg_t base)
+{
+ if (sandpoint_ide_ports_known == 0)
+ sandpoint_ide_probe();
+
+ if (base == sandpoint_ide_regbase[0])
+ return SANDPOINT_IDE_INT0;
+ else if (base == sandpoint_ide_regbase[1])
+ return SANDPOINT_IDE_INT1;
+ else
+ return 0;
+}
+
+static ide_ioreg_t
+sandpoint_ide_default_io_base(int index)
+{
+ if (sandpoint_ide_ports_known == 0)
+ sandpoint_ide_probe();
+
+ return sandpoint_ide_regbase[index];
+}
+
+static void __init
+sandpoint_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;
+ unsigned int alt_status_base;
+ int i;
+
+ for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
+ hw->io_ports[i] = reg++;
+
+ if (data_port == sandpoint_ide_regbase[0]) {
+ alt_status_base = sandpoint_ide_ctl_regbase[0] + 2;
+ hw->irq = 14;
+ } else if (data_port == sandpoint_ide_regbase[1]) {
+ alt_status_base = sandpoint_ide_ctl_regbase[1] + 2;
+ hw->irq = 15;
+ } else {
+ alt_status_base = 0;
+ hw->irq = 0;
+ }
+
+ if (ctrl_port)
+ hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
+ else
+ hw->io_ports[IDE_CONTROL_OFFSET] = alt_status_base;
+
+ if (irq != NULL)
+ *irq = hw->irq;
+
+ return;
+}
+#endif
+
+/*
+ * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1.
+ */
+static __inline__ void
+sandpoint_set_bat(void)
+{
+#if 1
+ mb();
+ mtspr(DBAT1U, 0xf8000ffe);
+ mtspr(DBAT1L, 0xf800002a);
+ mb();
+#else
+ unsigned long bat3u, bat3l;
+
+ __asm__ __volatile__(" lis %0,0xf800\n \
+ ori %1,%0,0x002a\n \
+ ori %0,%0,0x0ffe\n \
+ mtspr 0x21e,%0\n \
+ mtspr 0x21f,%1\n \
+ isync\n \
+ sync ":"=r"(bat3u), "=r"(bat3l));
+#endif
+}
+
+TODC_ALLOC();
+
+void __init
+platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+ unsigned long r6, unsigned long r7)
+{
+ parse_bootinfo(find_bootinfo());
+
+ /* ASSUMPTION: If both r3 (bd_t pointer) and r6 (cmdline pointer)
+ * are non-zero, then we should use the board info from the bd_t
+ * structure and the cmdline pointed to by r6 instead of the
+ * information from birecs, if any. Otherwise, use the information
+ * from birecs as discovered by the preceeding call to
+ * parse_bootinfo(). This rule should work with both PPCBoot, which
+ * uses a bd_t board info structure, and the kernel boot wrapper,
+ * which uses birecs.
+ */
+ if (r3 && r6) {
+ /* copy board info structure */
+ memcpy((void *) __res, (void *) (r3 + KERNELBASE),
+ sizeof (bd_t));
+ /* copy command line */
+ *(char *) (r7 + KERNELBASE) = 0;
+ strcpy(cmd_line, (char *) (r6 + KERNELBASE));
+ }
+#ifdef CONFIG_BLK_DEV_INITRD
+ /* take care of initrd if we have one */
+ if (r4) {
+ initrd_start = r4 + KERNELBASE;
+ initrd_end = r5 + KERNELBASE;
+ }
+#endif /* CONFIG_BLK_DEV_INITRD */
+
+ /* Map in board regs, etc. */
+ sandpoint_set_bat();
+
+ isa_io_base = MPC10X_MAPB_ISA_IO_BASE;
+ isa_mem_base = MPC10X_MAPB_ISA_MEM_BASE;
+ pci_dram_offset = MPC10X_MAPB_DRAM_OFFSET;
+ ISA_DMA_THRESHOLD = 0x00ffffff;
+ DMA_MODE_READ = 0x44;
+ DMA_MODE_WRITE = 0x48;
+
+ ppc_md.setup_arch = sandpoint_setup_arch;
+ ppc_md.show_cpuinfo = sandpoint_show_cpuinfo;
+ ppc_md.irq_cannonicalize = sandpoint_irq_cannonicalize;
+ ppc_md.init_IRQ = sandpoint_init_IRQ;
+ ppc_md.get_irq = openpic_get_irq;
+ ppc_md.init = sandpoint_init2;
+
+ ppc_md.restart = sandpoint_restart;
+ ppc_md.power_off = sandpoint_power_off;
+ ppc_md.halt = sandpoint_halt;
+
+ ppc_md.find_end_of_memory = sandpoint_find_end_of_memory;
+ ppc_md.setup_io_mappings = sandpoint_map_io;
+
+ TODC_INIT(TODC_TYPE_PC97307, 0x70, 0x00, 0x71, 8);
+ ppc_md.time_init = todc_time_init;
+ ppc_md.set_rtc_time = todc_set_rtc_time;
+ ppc_md.get_rtc_time = todc_get_rtc_time;
+ ppc_md.calibrate_decr = todc_calibrate_decr;
+
+ ppc_md.nvram_read_val = todc_mc146818_read_val;
+ ppc_md.nvram_write_val = todc_mc146818_write_val;
+
+#ifdef CONFIG_SERIAL
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
+ ppc_md.progress = gen550_progress;
+#endif
+ ppc_md.early_serial_map = sandpoint_early_serial_map;
+#endif
+
+#ifdef CONFIG_VT
+ ppc_md.kbd_setkeycode = pckbd_setkeycode;
+ ppc_md.kbd_getkeycode = pckbd_getkeycode;
+ ppc_md.kbd_translate = pckbd_translate;
+ ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
+ ppc_md.kbd_leds = pckbd_leds;
+ ppc_md.kbd_init_hw = pckbd_init_hw;
+#ifdef CONFIG_MAGIC_SYSRQ
+ ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate;
+ SYSRQ_KEY = 0x54;
+#endif
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
+ ppc_ide_md.default_irq = sandpoint_ide_default_irq;
+ ppc_ide_md.default_io_base = sandpoint_ide_default_io_base;
+ ppc_ide_md.ide_init_hwif = sandpoint_ide_init_hwif_ports;
+#endif
+
+ return;
+}
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/sandpoint_serial.h linux-2.4.23-bk19/arch/ppc/platforms/sandpoint_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/sandpoint_serial.h 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/sandpoint_serial.h 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,47 @@
+/*
+ * include/asm-ppc/sandpoint_serial.h
+ *
+ * Definitions for Motorola SPS Sandpoint Test Platform
+ *
+ * Author: Mark A. Greer
+ * mgreer@mvista.com
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * 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.
+ */
+
+#ifndef __ASMPPC_SANDPOINT_SERIAL_H
+#define __ASMPPC_SANDPOINT_SERIAL_H
+
+#include
+
+#define SANDPOINT_SERIAL_0 0xfe0003f8
+#define SANDPOINT_SERIAL_1 0xfe0002f8
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define RS_TABLE_SIZE 64
+#else
+#define RS_TABLE_SIZE 2
+#endif
+
+/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
+#define BASE_BAUD ( 1843200 / 16 )
+
+#define STD_SERIAL_PORT_DFNS \
+ /* ttyS0 */ \
+ { 0, BASE_BAUD, SANDPOINT_SERIAL_0, 4, ASYNC_BOOT_AUTOCONF, \
+ iomem_base: (u8 *)SANDPOINT_SERIAL_0, \
+ io_type: SERIAL_IO_MEM }, \
+ /* ttyS1 */ \
+ { 0, BASE_BAUD, SANDPOINT_SERIAL_1, 3, ASYNC_BOOT_AUTOCONF, \
+ iomem_base: (u8 *)SANDPOINT_SERIAL_1, \
+ io_type: SERIAL_IO_MEM },
+
+#define SERIAL_PORT_DFNS \
+ STD_SERIAL_PORT_DFNS
+
+#endif /* __ASMPPC_SANDPOINT_SERIAL_H */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/spruce.h linux-2.4.23-bk19/arch/ppc/platforms/spruce.h
--- linux-2.4.23-bk18/arch/ppc/platforms/spruce.h 2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/spruce.h 2003-12-30 02:50:29.000000000 -0800
@@ -70,7 +70,7 @@
#define STD_UART_OP(num) \
{ 0, BASE_BAUD, 0, UART##num##_INT, \
- (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \
+ ASYNC_BOOT_AUTOCONF, \
iomem_base: UART##num##_IO_BASE, \
io_type: SERIAL_IO_MEM},
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/spruce_setup.c linux-2.4.23-bk19/arch/ppc/platforms/spruce_setup.c
--- linux-2.4.23-bk18/arch/ppc/platforms/spruce_setup.c 2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/spruce_setup.c 2003-12-30 02:50:29.000000000 -0800
@@ -132,7 +132,7 @@
serial_req.line = 0;
serial_req.port = 0;
serial_req.irq = 3;
- serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+ serial_req.flags = ASYNC_BOOT_AUTOCONF;
serial_req.io_type = SERIAL_IO_MEM;
serial_req.iomem_base = (u_char *)UART0_IO_BASE;
serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/drivers/block/cciss.c linux-2.4.23-bk19/drivers/block/cciss.c
--- linux-2.4.23-bk18/drivers/block/cciss.c 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/block/cciss.c 2003-12-30 02:50:29.000000000 -0800
@@ -2677,11 +2677,13 @@
}
#ifdef CONFIG_X86
+{
/* Need to enable prefetch in the SCSI core for 6400 in x86 */
__u32 prefetch;
prefetch = readl(&(c->cfgtable->SCSI_Prefetch));
prefetch |= 0x100;
writel(prefetch, &(c->cfgtable->SCSI_Prefetch));
+}
#endif
#ifdef CCISS_DEBUG
diff -urN linux-2.4.23-bk18/drivers/char/Config.in linux-2.4.23-bk19/drivers/char/Config.in
--- linux-2.4.23-bk18/drivers/char/Config.in 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/Config.in 2003-12-30 02:50:29.000000000 -0800
@@ -274,6 +274,9 @@
dep_tristate ' Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
fi
dep_tristate ' AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
+ if [ "$CONFIG_8xx" = "y" ]; then
+ tristate ' MPC8xx Watchdog Timer' CONFIG_8xx_WDT
+ fi
fi
endmenu
@@ -285,7 +288,8 @@
fi
tristate 'NetWinder flash support' CONFIG_NWFLASH
fi
-dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
+tristate 'NatSemi SCx200 Support' CONFIG_SCx200
+dep_tristate ' NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
if [ "$CONFIG_IA64_GENERIC" = "y" -o "$CONFIG_IA64_SGI_SN2" = "y" ] ; then
bool 'SGI SN2 fetchop support' CONFIG_FETCHOP
diff -urN linux-2.4.23-bk18/drivers/char/Makefile linux-2.4.23-bk19/drivers/char/Makefile
--- linux-2.4.23-bk18/drivers/char/Makefile 2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -288,7 +288,8 @@
obj-$(CONFIG_DZ) += dz.o
obj-$(CONFIG_NWBUTTON) += nwbutton.o
obj-$(CONFIG_NWFLASH) += nwflash.o
-obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
+obj-$(CONFIG_SCx200) += scx200.o
+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o
# Only one watchdog can succeed. We probe the hardware watchdog
# drivers first, then the softdog driver. This means if your hardware
@@ -320,6 +321,7 @@
obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
obj-$(CONFIG_INDYDOG) += indydog.o
+obj-$(CONFIG_8xx_WDT) += mpc8xx_wdt.o
subdir-$(CONFIG_MWAVE) += mwave
ifeq ($(CONFIG_MWAVE),y)
diff -urN linux-2.4.23-bk18/drivers/char/mpc8xx_wdt.c linux-2.4.23-bk19/drivers/char/mpc8xx_wdt.c
--- linux-2.4.23-bk18/drivers/char/mpc8xx_wdt.c 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/mpc8xx_wdt.c 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,191 @@
+/*
+ * mpc8xx_wdt.c - MPC8xx watchdog userspace interface
+ *
+ * Copyright (C) 2002 Florian Schirmer
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+extern int m8xx_wdt_get_timeout(void);
+extern void m8xx_wdt_reset(void);
+
+static struct semaphore wdt_sem;
+static int wdt_status;
+
+static struct watchdog_info ident = {
+ .identity = "MPC8xx watchdog",
+ .options = WDIOF_KEEPALIVEPING,
+};
+
+static void
+mpc8xx_wdt_handler_disable(void)
+{
+ volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+ imap->im_sit.sit_piscr &= ~(PISCR_PIE | PISCR_PTE);
+
+ printk(KERN_NOTICE "mpc8xx_wdt: keep-alive handler deactivated\n");
+}
+
+static void
+mpc8xx_wdt_handler_enable(void)
+{
+ volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+ imap->im_sit.sit_piscr |= PISCR_PIE | PISCR_PTE;
+
+ printk(KERN_NOTICE "mpc8xx_wdt: keep-alive handler activated\n");
+}
+
+static int
+mpc8xx_wdt_open(struct inode *inode, struct file *file)
+{
+ switch (MINOR(inode->i_rdev)) {
+ case WATCHDOG_MINOR:
+ if (down_trylock(&wdt_sem))
+ return -EBUSY;
+
+ m8xx_wdt_reset();
+ mpc8xx_wdt_handler_disable();
+ break;
+
+ default:
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
+static int
+mpc8xx_wdt_release(struct inode *inode, struct file *file)
+{
+ m8xx_wdt_reset();
+
+#if !defined(CONFIG_WATCHDOG_NOWAYOUT)
+ mpc8xx_wdt_handler_enable();
+#endif
+
+ up(&wdt_sem);
+
+ return 0;
+}
+
+static ssize_t
+mpc8xx_wdt_write(struct file *file, const char *data, size_t len, loff_t * ppos)
+{
+ /* Can't seek (pwrite) on this device */
+ if (ppos != &file->f_pos)
+ return -ESPIPE;
+
+ if (!len)
+ return 0;
+
+ m8xx_wdt_reset();
+
+ return 1;
+}
+
+static int
+mpc8xx_wdt_ioctl(struct inode *inode, struct file *file,
+ unsigned int cmd, unsigned long arg)
+{
+ switch (cmd) {
+ case WDIOC_GETSUPPORT:
+ if (copy_to_user((void *) arg, &ident, sizeof (ident)))
+ return -EFAULT;
+ break;
+
+ case WDIOC_GETSTATUS:
+ case WDIOC_GETBOOTSTATUS:
+ if (put_user(wdt_status, (int *) arg))
+ return -EFAULT;
+ wdt_status &= ~WDIOF_KEEPALIVEPING;
+ break;
+
+ case WDIOC_KEEPALIVE:
+ m8xx_wdt_reset();
+ wdt_status |= WDIOF_KEEPALIVEPING;
+ break;
+
+ case WDIOC_GETTIMEOUT:
+ {
+ int timeout = m8xx_wdt_get_timeout();
+ if (put_user(timeout, (int *) arg))
+ return -EFAULT;
+ break;
+ }
+
+ default:
+ return -ENOTTY;
+ }
+
+ return 0;
+}
+
+static struct file_operations mpc8xx_wdt_fops = {
+ .owner = THIS_MODULE,
+ .write = mpc8xx_wdt_write,
+ .ioctl = mpc8xx_wdt_ioctl,
+ .open = mpc8xx_wdt_open,
+ .release = mpc8xx_wdt_release,
+};
+
+static struct miscdevice mpc8xx_wdt_miscdev = {
+ .minor = WATCHDOG_MINOR,
+ .name = "watchdog",
+ .fops = &mpc8xx_wdt_fops,
+};
+
+static int __init
+mpc8xx_wdt_init(void)
+{
+ int ret;
+
+ sema_init(&wdt_sem, 1);
+
+ if ((ret = misc_register(&mpc8xx_wdt_miscdev))) {
+ printk(KERN_WARNING
+ "mpc8xx_wdt: could not register userspace interface\n");
+ return ret;
+ }
+
+ return 0;
+}
+
+static void __exit
+mpc8xx_wdt_exit(void)
+{
+ misc_deregister(&mpc8xx_wdt_miscdev);
+
+ m8xx_wdt_reset();
+ mpc8xx_wdt_handler_enable();
+}
+
+module_init(mpc8xx_wdt_init);
+module_exit(mpc8xx_wdt_exit);
+
+MODULE_AUTHOR("Florian Schirmer ");
+MODULE_DESCRIPTION("MPC8xx watchdog driver");
+MODULE_LICENSE("GPL");
diff -urN linux-2.4.23-bk18/drivers/i2c/Config.in linux-2.4.23-bk19/drivers/i2c/Config.in
--- linux-2.4.23-bk18/drivers/i2c/Config.in 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/Config.in 2003-12-30 02:50:29.000000000 -0800
@@ -12,15 +12,16 @@
if [ "$CONFIG_I2C_ALGOBIT" != "n" ]; then
dep_tristate ' Philips style parallel port adapter' CONFIG_I2C_PHILIPSPAR $CONFIG_I2C_ALGOBIT $CONFIG_PARPORT
dep_tristate ' ELV adapter' CONFIG_I2C_ELV $CONFIG_I2C_ALGOBIT
- dep_tristate ' Velleman K9000 adapter' CONFIG_I2C_VELLEMAN $CONFIG_I2C_ALGOBIT
+ dep_tristate ' Velleman K8000 adapter' CONFIG_I2C_VELLEMAN $CONFIG_I2C_ALGOBIT
dep_tristate ' NatSemi SCx200 I2C using GPIO pins' CONFIG_SCx200_I2C $CONFIG_SCx200 $CONFIG_I2C_ALGOBIT
if [ "$CONFIG_SCx200_I2C" != "n" ]; then
int ' GPIO pin used for SCL' CONFIG_SCx200_I2C_SCL 12
int ' GPIO pin used for SDA' CONFIG_SCx200_I2C_SDA 13
fi
- dep_tristate ' NatSemi SCx200 ACCESS.bus' CONFIG_SCx200_ACB $CONFIG_I2C
fi
+ dep_tristate 'NatSemi SCx200 ACCESS.bus' CONFIG_SCx200_ACB $CONFIG_I2C
+
dep_tristate 'I2C PCF 8584 interfaces' CONFIG_I2C_ALGOPCF $CONFIG_I2C
if [ "$CONFIG_I2C_ALGOPCF" != "n" ]; then
dep_tristate ' Elektor ISA card' CONFIG_I2C_ELEKTOR $CONFIG_I2C_ALGOPCF
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-adap-ite.c linux-2.4.23-bk19/drivers/i2c/i2c-adap-ite.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-adap-ite.c 2002-08-02 17:39:44.000000000 -0700
+++ linux-2.4.23-bk19/drivers/i2c/i2c-adap-ite.c 2003-12-30 02:50:29.000000000 -0800
@@ -38,7 +38,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -61,11 +60,7 @@
static int i2c_debug=0;
static struct iic_ite gpi;
-#if (LINUX_VERSION_CODE < 0x020301)
-static struct wait_queue *iic_wait = NULL;
-#else
static wait_queue_head_t iic_wait;
-#endif
static int iic_pending;
/* ----- global defines ----------------------------------------------- */
@@ -271,9 +266,6 @@
piic->iic_own = own;
iic_ite_data.data = (void *)piic;
-#if (LINUX_VERSION_CODE >= 0x020301)
- init_waitqueue_head(&iic_wait);
-#endif
if (iic_hw_resrc_init() == 0) {
if (i2c_iic_add_bus(&iic_ite_ops) < 0)
return -ENODEV;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-bit.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-bit.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-bit.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-bit.c 2003-12-30 02:50:29.000000000 -0800
@@ -27,7 +27,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-ite.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-ite.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-ite.c 2001-10-11 08:05:47.000000000 -0700
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-ite.c 2003-12-30 02:50:29.000000000 -0800
@@ -38,7 +38,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-pcf.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-pcf.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-pcf.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-pcf.c 2003-12-30 02:50:29.000000000 -0800
@@ -31,7 +31,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-core.c linux-2.4.23-bk19/drivers/i2c/i2c-core.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-core.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-core.c 2003-12-30 02:50:29.000000000 -0800
@@ -33,13 +33,8 @@
/* ----- compatibility stuff ----------------------------------------------- */
-#include
#include
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1)
-#define init_MUTEX(s) do { *(s) = MUTEX; } while(0)
-#endif
-
#include
/* ----- global defines ---------------------------------------------------- */
@@ -84,10 +79,6 @@
static int i2cproc_init(void);
static int i2cproc_cleanup(void);
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,27))
-static void monitor_bus_i2c(struct inode *inode, int fill);
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,58)) */
-
static ssize_t i2cproc_bus_read(struct file * file, char * buf,size_t count,
loff_t *ppos);
static int read_bus_i2c(char *buf, char **start, off_t offset, int len,
@@ -99,12 +90,6 @@
read: i2cproc_bus_read,
};
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,48))
-static struct inode_operations i2cproc_inode_operations = {
- &i2cproc_operations
-};
-#endif
-
static int i2cproc_initialized = 0;
#else /* undef CONFIG_PROC_FS */
@@ -164,16 +149,8 @@
goto ERROR1;
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,48))
proc_entry->proc_fops = &i2cproc_operations;
-#else
- proc_entry->ops = &i2cproc_inode_operations;
-#endif
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
proc_entry->owner = THIS_MODULE;
-#else
- proc_entry->fill_inode = &monitor_bus_i2c;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,58)) */
adap->inode = proc_entry->low_ino;
}
@@ -611,18 +588,6 @@
#ifdef CONFIG_PROC_FS
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,27))
-/* Monitor access to /proc/bus/i2c*; make unloading i2c-proc impossible
- if some process still uses it or some file in it */
-void monitor_bus_i2c(struct inode *inode, int fill)
-{
- if (fill)
- MOD_INC_USE_COUNT;
- else
- MOD_DEC_USE_COUNT;
-}
-#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,37)) */
-
/* This function generates the output for /proc/bus/i2c */
int read_bus_i2c(char *buf, char **start, off_t offset, int len, int *eof,
void *private)
@@ -732,11 +697,7 @@
return -ENOENT;
}
proc_bus_i2c->read_proc = &read_bus_i2c;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
proc_bus_i2c->owner = THIS_MODULE;
-#else
- proc_bus_i2c->fill_inode = &monitor_bus_i2c;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27)) */
i2cproc_initialized += 2;
return 0;
}
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-dev.c linux-2.4.23-bk19/drivers/i2c/i2c-dev.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-dev.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-dev.c 2003-12-30 02:50:29.000000000 -0800
@@ -35,10 +35,7 @@
#include
#include
#include
-#include
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
#include
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
#ifdef CONFIG_DEVFS_FS
#include
#endif
@@ -60,9 +57,6 @@
/* struct file_operations changed too often in the 2.1 series for nice code */
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
-static loff_t i2cdev_lseek (struct file *file, loff_t offset, int origin);
-#endif
static ssize_t i2cdev_read (struct file *file, char *buf, size_t count,
loff_t *offset);
static ssize_t i2cdev_write (struct file *file, const char *buf, size_t count,
@@ -88,14 +82,8 @@
static int i2cdev_cleanup(void);
static struct file_operations i2cdev_fops = {
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
owner: THIS_MODULE,
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
- llseek: i2cdev_lseek,
-#else
llseek: no_llseek,
-#endif
read: i2cdev_read,
write: i2cdev_write,
ioctl: i2cdev_ioctl,
@@ -133,20 +121,6 @@
static int i2cdev_initialized;
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
-/* Note that the lseek function is called llseek in 2.1 kernels. But things
- are complicated enough as is. */
-loff_t i2cdev_lseek (struct file *file, loff_t offset, int origin)
-{
-#ifdef DEBUG
- struct inode *inode = file->f_dentry->d_inode;
- printk("i2c-dev.o: i2c-%d lseek to %ld bytes relative to %d.\n",
- MINOR(inode->i_rdev),(long) offset,origin);
-#endif /* DEBUG */
- return -ESPIPE;
-}
-#endif
-
static ssize_t i2cdev_read (struct file *file, char *buf, size_t count,
loff_t *offset)
{
@@ -434,9 +408,6 @@
if (i2cdev_adaps[minor]->inc_use)
i2cdev_adaps[minor]->inc_use(i2cdev_adaps[minor]);
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0)
- MOD_INC_USE_COUNT;
-#endif /* LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0) */
#ifdef DEBUG
printk(KERN_DEBUG "i2c-dev.o: opened i2c-%d\n",minor);
@@ -452,16 +423,10 @@
#ifdef DEBUG
printk(KERN_DEBUG "i2c-dev.o: Closed: i2c-%d\n", minor);
#endif
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0)
- MOD_DEC_USE_COUNT;
-#else /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
lock_kernel();
-#endif /* LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0) */
if (i2cdev_adaps[minor]->dec_use)
i2cdev_adaps[minor]->dec_use(i2cdev_adaps[minor]);
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
unlock_kernel();
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
return 0;
}
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-elektor.c linux-2.4.23-bk19/drivers/i2c/i2c-elektor.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-elektor.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-elektor.c 2003-12-30 02:50:29.000000000 -0800
@@ -30,7 +30,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -55,11 +54,7 @@
in some functions, called from the algo-pcf module. Sometimes it's
need to be rewriten - but for now just remove this for simpler reading */
-#if (LINUX_VERSION_CODE < 0x020301)
-static struct wait_queue *pcf_wait = NULL;
-#else
static wait_queue_head_t pcf_wait;
-#endif
static int pcf_pending;
/* ----- global defines ----------------------------------------------- */
@@ -281,9 +276,7 @@
base = DEFAULT_BASE;
}
-#if (LINUX_VERSION_CODE >= 0x020301)
init_waitqueue_head(&pcf_wait);
-#endif
if (pcf_isa_init() == 0) {
if (i2c_pcf_add_bus(&pcf_isa_ops) < 0)
return -ENODEV;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-elv.c linux-2.4.23-bk19/drivers/i2c/i2c-elv.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-elv.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-elv.c 2003-12-30 02:50:29.000000000 -0800
@@ -27,7 +27,6 @@
#include
#include
#include
-#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-keywest.c linux-2.4.23-bk19/drivers/i2c/i2c-keywest.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-keywest.c 2002-11-28 15:53:13.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-keywest.c 2003-12-30 02:50:29.000000000 -0800
@@ -45,7 +45,6 @@
#include
#include
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-philips-par.c linux-2.4.23-bk19/drivers/i2c/i2c-philips-par.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-philips-par.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-philips-par.c 2003-12-30 02:50:29.000000000 -0800
@@ -250,41 +250,25 @@
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
static struct parport_driver i2c_driver = {
"i2c-philips-par",
i2c_parport_attach,
i2c_parport_detach,
NULL
};
-#endif
int __init i2c_bitlp_init(void)
{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,4)
- struct parport *port;
-#endif
printk(KERN_INFO "i2c-philips-par.o: i2c Philips parallel port adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
parport_register_driver(&i2c_driver);
-#else
- for (port = parport_enumerate(); port; port=port->next)
- i2c_parport_attach(port);
-#endif
return 0;
}
void __exit i2c_bitlp_exit(void)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
parport_unregister_driver(&i2c_driver);
-#else
- struct parport *port;
- for (port = parport_enumerate(); port; port=port->next)
- i2c_parport_detach(port);
-#endif
}
EXPORT_NO_SYMBOLS;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-proc.c linux-2.4.23-bk19/drivers/i2c/i2c-proc.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-proc.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-proc.c 2003-12-30 02:50:29.000000000 -0800
@@ -23,7 +23,6 @@
This driver puts entries in /proc/sys/dev/sensors for each I2C device
*/
-#include
#include
#include
#include
@@ -63,10 +62,6 @@
static struct i2c_client *i2c_clients[SENSORS_ENTRY_MAX];
static unsigned short i2c_inodes[SENSORS_ENTRY_MAX];
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1)
-static void i2c_fill_inode(struct inode *inode, int fill);
-static void i2c_dir_fill_inode(struct inode *inode, int fill);
-#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1) */
static ctl_table sysctl_table[] = {
{CTL_DEV, "dev", NULL, 0, 0555},
@@ -196,12 +191,7 @@
#endif /* DEBUG */
i2c_inodes[id - 256] =
new_header->ctl_table->child->child->de->low_ino;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
new_header->ctl_table->child->child->de->owner = controlling_mod;
-#else
- new_header->ctl_table->child->child->de->fill_inode =
- &i2c_dir_fill_inode;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27)) */
return id;
}
@@ -863,12 +853,7 @@
if (!
(i2c_proc_header =
register_sysctl_table(i2c_proc, 0))) return -ENOMEM;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,1))
i2c_proc_header->ctl_table->child->de->owner = THIS_MODULE;
-#else
- i2c_proc_header->ctl_table->child->de->fill_inode =
- &i2c_fill_inode;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,1)) */
i2c_initialized++;
return 0;
}
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-velleman.c linux-2.4.23-bk19/drivers/i2c/i2c-velleman.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-velleman.c 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-velleman.c 2003-12-30 02:50:29.000000000 -0800
@@ -1,5 +1,5 @@
/* ------------------------------------------------------------------------- */
-/* i2c-velleman.c i2c-hw access for Velleman K9000 adapters */
+/* i2c-velleman.c i2c-hw access for Velleman K8000 adapters */
/* ------------------------------------------------------------------------- */
/* Copyright (C) 1995-96, 2000 Simon G. Vogl
diff -urN linux-2.4.23-bk18/drivers/net/wan/Config.in linux-2.4.23-bk19/drivers/net/wan/Config.in
--- linux-2.4.23-bk18/drivers/net/wan/Config.in 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/Config.in 2003-12-30 02:50:29.000000000 -0800
@@ -78,6 +78,7 @@
comment ' X.25/LAPB support is disabled'
fi
if [ "$CONFIG_PCI" != "n" ]; then
+ dep_tristate ' Goramo PCI200SYN support' CONFIG_PCI200SYN $CONFIG_HDLC
dep_tristate ' Cyclades-PC300 support (RS-232/V.35, X.21, T1/E1 boards)' CONFIG_PC300 $CONFIG_HDLC
if [ "$CONFIG_PC300" != "n" ]; then
if [ "$CONFIG_PPP" != "n" -a "$CONFIG_PPP_MULTLINK" != "n" -a "$CONFIG_PPP_SYNCTTY" != "n" -a "$CONFIG_HDLC_PPP" = "y" ]; then
@@ -87,14 +88,12 @@
comment ' Refer to the file README.mlppp, provided by PC300 package.'
fi
fi
+ dep_tristate ' FarSync T-Series support' CONFIG_FARSYNC $CONFIG_HDLC
+ fi
+ if [ "$CONFIG_ISA" != "n" ]; then
+ dep_tristate ' SDL RISCom/N2 support' CONFIG_N2 $CONFIG_HDLC
+ dep_tristate ' Moxa C101 support' CONFIG_C101 $CONFIG_HDLC
fi
- dep_tristate ' SDL RISCom/N2 support' CONFIG_N2 $CONFIG_HDLC
- dep_tristate ' Moxa C101 support' CONFIG_C101 $CONFIG_HDLC
- dep_tristate ' FarSync T-Series support' CONFIG_FARSYNC $CONFIG_HDLC
- bool ' Debug received/transmitted packets' CONFIG_HDLC_DEBUG_PKT
- bool ' Debug hard_header routines' CONFIG_HDLC_DEBUG_HARD_HEADER
- bool ' Debug FECN/BECN conditions' CONFIG_HDLC_DEBUG_ECN
- bool ' Debug RX/TX packet rings' CONFIG_HDLC_DEBUG_RINGS
fi
tristate ' Frame relay DLCI support' CONFIG_DLCI
diff -urN linux-2.4.23-bk18/drivers/net/wan/Makefile linux-2.4.23-bk19/drivers/net/wan/Makefile
--- linux-2.4.23-bk18/drivers/net/wan/Makefile 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/Makefile 2003-12-30 02:50:29.000000000 -0800
@@ -80,6 +80,7 @@
endif
obj-$(CONFIG_N2) += n2.o
obj-$(CONFIG_C101) += c101.o
+obj-$(CONFIG_PCI200SYN) += pci200syn.o
include $(TOPDIR)/Rules.make
diff -urN linux-2.4.23-bk18/drivers/net/wan/c101.c linux-2.4.23-bk19/drivers/net/wan/c101.c
--- linux-2.4.23-bk18/drivers/net/wan/c101.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/c101.c 2003-12-30 02:50:29.000000000 -0800
@@ -14,7 +14,6 @@
* Moxa C101 User's Manual
*/
-#include
#include
#include
#include
@@ -33,6 +32,9 @@
static const char* version = "Moxa C101 driver version: 1.14";
static const char* devname = "C101";
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
#define C101_PAGE 0x1D00
#define C101_DTR 0x1E00
#define C101_SCA 0x1F00
@@ -188,7 +190,7 @@
hdlc_device *hdlc = dev_to_hdlc(dev);
port_t *port = hdlc_to_port(hdlc);
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
if (cmd == SIOCDEVPRIVATE) {
sca_dump_rings(hdlc);
return 0;
@@ -297,9 +299,6 @@
card->tx_ring_buffers = TX_RING_BUFFERS;
card->rx_ring_buffers = RX_RING_BUFFERS;
- printk(KERN_DEBUG "c101: using %u TX + %u RX packets rings\n",
- card->tx_ring_buffers, card->rx_ring_buffers);
-
card->buff_offset = C101_WINDOW_SIZE; /* Bytes 1D00-1FFF reserved */
readb(card->win0base + C101_PAGE); /* Resets SCA? */
@@ -332,6 +331,11 @@
sca_init_sync_port(card); /* Set up C101 memory */
+ printk(KERN_INFO "%s: Moxa C101 on IRQ%u,"
+ " using %u TX + %u RX packets rings\n",
+ hdlc_to_name(&card->hdlc), card->irq,
+ card->tx_ring_buffers, card->rx_ring_buffers);
+
*new_card = card;
new_card = &card->next_card;
return 0;
diff -urN linux-2.4.23-bk18/drivers/net/wan/hd64572.h linux-2.4.23-bk19/drivers/net/wan/hd64572.h
--- linux-2.4.23-bk18/drivers/net/wan/hd64572.h 2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hd64572.h 2003-12-30 02:50:29.000000000 -0800
@@ -13,8 +13,8 @@
*
*/
-#ifndef _HD64572_H
-#define _HD64572_H
+#ifndef __HD64572_H
+#define __HD64572_H
/* Illegal Access Register */
#define ILAR 0x00
@@ -49,6 +49,9 @@
#define IR0_M(val, chan) ((val)<<(8*(chan))) /* Int MSCI */
/* MSCI Channel Registers */
+#define MSCI0_OFFSET 0x00
+#define MSCI1_OFFSET 0x80
+
#define MD0 0x138 /* Mode reg 0 */
#define MD1 0x139 /* Mode reg 1 */
#define MD2 0x13a /* Mode reg 2 */
@@ -97,6 +100,11 @@
#define RCR 0x156 /* Rx DMA Critical Request Reg */
/* Timer Registers */
+#define TIMER0RX_OFFSET 0x00
+#define TIMER0TX_OFFSET 0x10
+#define TIMER1RX_OFFSET 0x20
+#define TIMER1TX_OFFSET 0x30
+
#define TCNTL 0x200 /* Timer Upcounter L */
#define TCNTH 0x201 /* Timer Upcounter H */
#define TCONRL 0x204 /* Timer Constant Register L */
@@ -122,6 +130,11 @@
#define DCR_TX(chan) (0x59 + 2*chan) /* DMA Command Reg (Tx) */
/* DMA Channel Registers */
+#define DMAC0RX_OFFSET 0x00
+#define DMAC0TX_OFFSET 0x20
+#define DMAC1RX_OFFSET 0x40
+#define DMAC1TX_OFFSET 0x60
+
#define DARL 0x80 /* Dest Addr Register L (single-block, RX only) */
#define DARH 0x81 /* Dest Addr Register H (single-block, RX only) */
#define DARB 0x82 /* Dest Addr Register B (single-block, RX only) */
@@ -156,7 +169,16 @@
unsigned char filler[5]; /* alignment filler (16 bytes) */
} pcsca_bd_t;
-/*
+typedef struct {
+ u32 cp; /* pointer to next block descriptor */
+ u32 bp; /* buffer pointer */
+ u16 len; /* data length */
+ u8 stat; /* status */
+ u8 unused; /* pads to 4-byte boundary */
+}pkt_desc;
+
+
+/*
Descriptor Status definitions:
Bit Transmission Reception
@@ -180,6 +202,23 @@
#define DST_SHRT 0x40 /* Short Frame */
#define DST_EOM 0x80 /* End of Message */
+/* Packet Descriptor Status bits */
+
+#define ST_TX_EOM 0x80 /* End of frame */
+#define ST_TX_UNDRRUN 0x08
+#define ST_TX_OWNRSHP 0x02
+#define ST_TX_EOT 0x01 /* End of transmition */
+
+#define ST_RX_EOM 0x80 /* End of frame */
+#define ST_RX_SHORT 0x40 /* Short frame */
+#define ST_RX_ABORT 0x20 /* Abort */
+#define ST_RX_RESBIT 0x10 /* Residual bit */
+#define ST_RX_OVERRUN 0x08 /* Overrun */
+#define ST_RX_CRC 0x04 /* CRC */
+#define ST_RX_OWNRSHP 0x02
+
+#define ST_ERROR_MASK 0x7C
+
/* Status Counter Registers */
#define CMCR 0x158 /* Counter Master Ctl Reg */
#define TECNTL 0x160 /* Tx EOM Counter L */
@@ -236,11 +275,25 @@
#define MD0_BIT_SYNC 0x80
#define MD0_TRANSP 0xc0
+#define MD0_HDLC 0x80 /* Bit-sync HDLC mode */
+
+#define MD0_CRC_NONE 0x00
+#define MD0_CRC_16_0 0x04
+#define MD0_CRC_16 0x05
+#define MD0_CRC_ITU32 0x06
+#define MD0_CRC_ITU 0x07
+
#define MD1_NOADDR 0x00
#define MD1_SADDR1 0x40
#define MD1_SADDR2 0x80
#define MD1_DADDR 0xc0
+#define MD2_NRZI_IEEE 0x40
+#define MD2_MANCHESTER 0x80
+#define MD2_FM_MARK 0xA0
+#define MD2_FM_SPACE 0xC0
+#define MD2_LOOPBACK 0x03 /* Local data Loopback */
+
#define MD2_F_DUPLEX 0x00
#define MD2_AUTO_ECHO 0x01
#define MD2_LOOP_HI_Z 0x02
@@ -264,6 +317,10 @@
#define CTL_URSKP 0x40
#define CTL_URCT 0x80
+#define CTL_NORTS 0x01
+#define CTL_NODTR 0x02
+#define CTL_IDLE 0x10
+
#define RXS_BR0 0x01
#define RXS_BR1 0x02
#define RXS_BR2 0x04
@@ -292,6 +349,12 @@
#define EXS_TES1 0x20
#define EXS_TES2 0x40
+#define CLK_BRG_MASK 0x0F
+#define CLK_PIN_OUT 0x80
+#define CLK_LINE 0x00 /* clock line input */
+#define CLK_BRG 0x40 /* internal baud rate generator */
+#define CLK_TX_RXCLK 0x60 /* TX clock from RX clock */
+
#define CMD_RX_RST 0x11
#define CMD_RX_ENA 0x12
#define CMD_RX_DIS 0x13
@@ -314,6 +377,10 @@
#define CMD_SRCH_MODE 0x31
#define CMD_NOP 0x00
+#define CMD_RESET 0x21
+#define CMD_TX_ENABLE 0x02
+#define CMD_RX_ENABLE 0x12
+
#define ST0_RXRDY 0x01
#define ST0_TXRDY 0x02
#define ST0_RXINTB 0x20
@@ -364,6 +431,8 @@
#define IE0_RXINTB 0x20
#define IE0_RXINTA 0x40
#define IE0_TXINT 0x80
+#define IE0_UDRN 0x00008000 /* TX underrun MSCI interrupt enable */
+#define IE0_CDCD 0x00000400 /* CD level change interrupt enable */
#define IE1_IDLD 0x01
#define IE1_ABTD 0x02
@@ -414,14 +483,28 @@
#define DIR_EOM 0x40
#define DIR_EOT 0x80
+#define DIR_REFE 0x04
+#define DIR_UDRFE 0x04
+#define DIR_COAE 0x08
+#define DIR_COFE 0x10
+#define DIR_BOFE 0x20
+#define DIR_EOME 0x40
+#define DIR_EOTE 0x80
+
#define DMR_CNTE 0x02
#define DMR_NF 0x04
#define DMR_SEOME 0x08
#define DMR_TMOD 0x10
+#define DMER_DME 0x80 /* DMA Master Enable */
+
#define DCR_SW_ABT 0x01
#define DCR_FCT_CLR 0x02
+#define DCR_ABORT 0x01
+#define DCR_CLEAR_EOF 0x02
+
+#define PCR_COTE 0x80
#define PCR_PR0 0x01
#define PCR_PR1 0x02
#define PCR_PR2 0x04
@@ -430,4 +513,4 @@
#define PCR_OSB 0x40
#define PCR_BURST 0x80
-#endif /* (_HD64572_H) */
+#endif /* (__HD64572_H) */
diff -urN linux-2.4.23-bk18/drivers/net/wan/hd6457x.c linux-2.4.23-bk19/drivers/net/wan/hd6457x.c
--- linux-2.4.23-bk18/drivers/net/wan/hd6457x.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hd6457x.c 2003-12-30 02:50:29.000000000 -0800
@@ -35,7 +35,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -255,9 +254,6 @@
card_t* card = port_to_card(port);
u8 stat = sca_in(msci + ST1, card); /* read MSCI ST1 status */
- /* printk(KERN_DEBUG "MSCI INT: ST1=%02X ILAR=%02X\n",
- stat, sca_in(ILAR, card)); */
-
/* Reset MSCI TX underrun status bit */
sca_out(stat & ST1_UDRN, msci + ST1, card);
@@ -307,7 +303,7 @@
openwin(card, 0);
#endif
skb_put(skb, len);
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
printk(KERN_DEBUG "%s RX(%i):", hdlc_to_name(&port->hdlc), skb->len);
debug_frame(skb);
#endif
@@ -557,7 +553,7 @@
#endif
/* We're using the following interrupts:
- - TXINT (DMAC completed all transmisions, underflow or CTS change)
+ - TXINT (DMAC completed all transmisions, underrun or DCD change)
- all DMA interrupts
*/
@@ -633,7 +629,7 @@
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
static void sca_dump_rings(hdlc_device *hdlc)
{
port_t *port = hdlc_to_port(hdlc);
@@ -648,30 +644,26 @@
openwin(card, 0);
#endif
- printk(KERN_ERR "RX ring: CDA=%u EDA=%u DSR=%02X in=%u %sactive",
+ printk(KERN_DEBUG "RX ring: CDA=%u EDA=%u DSR=%02X in=%u %sactive",
sca_ina(get_dmac_rx(port) + CDAL, card),
sca_ina(get_dmac_rx(port) + EDAL, card),
- sca_in(DSR_RX(phy_node(port)), card),
- port->rxin,
+ sca_in(DSR_RX(phy_node(port)), card), port->rxin,
sca_in(DSR_RX(phy_node(port)), card) & DSR_DE?"":"in");
for (cnt = 0; cnt < port_to_card(port)->rx_ring_buffers; cnt++)
- printk(" %02X",
- readb(&(desc_address(port, cnt, 0)->stat)));
+ printk(" %02X", readb(&(desc_address(port, cnt, 0)->stat)));
- printk("\n" KERN_ERR "TX ring: CDA=%u EDA=%u DSR=%02X in=%u "
+ printk("\n" KERN_DEBUG "TX ring: CDA=%u EDA=%u DSR=%02X in=%u "
"last=%u %sactive",
sca_ina(get_dmac_tx(port) + CDAL, card),
sca_ina(get_dmac_tx(port) + EDAL, card),
- sca_in(DSR_TX(phy_node(port)), card), port->txin,
- port->txlast,
+ sca_in(DSR_TX(phy_node(port)), card), port->txin, port->txlast,
sca_in(DSR_TX(phy_node(port)), card) & DSR_DE ? "" : "in");
for (cnt = 0; cnt < port_to_card(port)->tx_ring_buffers; cnt++)
- printk(" %02X",
- readb(&(desc_address(port, cnt, 1)->stat)));
+ printk(" %02X", readb(&(desc_address(port, cnt, 1)->stat)));
printk("\n");
- printk(KERN_ERR "MSCI: MD: %02x %02x %02x, "
+ printk(KERN_DEBUG "MSCI: MD: %02x %02x %02x, "
"ST: %02x %02x %02x %02x"
#ifdef __HD64572_H
" %02x"
@@ -692,14 +684,14 @@
sca_in(get_msci(port) + CST1, card));
#ifdef __HD64572_H
- printk(KERN_ERR "ILAR: %02x\n", sca_in(ILAR, card));
+ printk(KERN_DEBUG "ILAR: %02x\n", sca_in(ILAR, card));
#endif
#if !defined(PAGE0_ALWAYS_MAPPED) && !defined(ALL_PAGES_ALWAYS_MAPPED)
openwin(card, page); /* Restore original page */
#endif
}
-#endif /* CONFIG_HDLC_DEBUG_RINGS */
+#endif /* DEBUG_RINGS */
@@ -720,7 +712,7 @@
desc = desc_address(port, port->txin + 1, 1);
if (readb(&desc->stat)) { /* allow 1 packet gap */
/* should never happen - previous xmit should stop queue */
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
printk(KERN_DEBUG "%s: transmitter buffer full\n", dev->name);
#endif
netif_stop_queue(dev);
@@ -728,7 +720,7 @@
return 1; /* request packet to be queued */
}
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
printk(KERN_DEBUG "%s TX(%i):", hdlc_to_name(hdlc), skb->len);
debug_frame(skb);
#endif
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_cisco.c linux-2.4.23-bk19/drivers/net/wan/hdlc_cisco.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_cisco.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_cisco.c 2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
* as published by the Free Software Foundation.
*/
-#include
#include
#include
#include
@@ -24,6 +23,7 @@
#include
#include
+#undef DEBUG_HARD_HEADER
#define CISCO_MULTICAST 0x8F /* Cisco multicast address */
#define CISCO_UNICAST 0x0F /* Cisco unicast address */
@@ -39,7 +39,7 @@
unsigned int len)
{
hdlc_header *data;
-#ifdef CONFIG_HDLC_DEBUG_HARD_HEADER
+#ifdef DEBUG_HARD_HEADER
printk(KERN_DEBUG "%s: cisco_hard_header called\n", dev->name);
#endif
@@ -182,7 +182,7 @@
case CISCO_KEEPALIVE_REQ:
hdlc->state.cisco.rxseq = ntohl(cisco_data->par1);
- if (ntohl(cisco_data->par2) == hdlc->state.cisco.txseq) {
+ if (ntohl(cisco_data->par2)==hdlc->state.cisco.txseq) {
hdlc->state.cisco.last_poll = jiffies;
if (!hdlc->state.cisco.up) {
u32 sec, min, hrs, days;
@@ -219,8 +219,7 @@
{
hdlc_device *hdlc = (hdlc_device*)arg;
- if (hdlc->state.cisco.up &&
- jiffies - hdlc->state.cisco.last_poll >=
+ if (hdlc->state.cisco.up && jiffies - hdlc->state.cisco.last_poll >=
hdlc->state.cisco.settings.timeout * HZ) {
hdlc->state.cisco.up = 0;
printk(KERN_INFO "%s: Link down\n", hdlc_to_name(hdlc));
@@ -281,10 +280,10 @@
return 0;
case IF_PROTO_CISCO:
- if(!capable(CAP_NET_ADMIN))
+ if (!capable(CAP_NET_ADMIN))
return -EPERM;
- if(dev->flags & IFF_UP)
+ if (dev->flags & IFF_UP)
return -EBUSY;
if (copy_from_user(&new_settings, cisco_s, size))
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_fr.c linux-2.4.23-bk19/drivers/net/wan/hdlc_fr.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_fr.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_fr.c 2003-12-30 02:50:29.000000000 -0800
@@ -19,7 +19,6 @@
-> 1 when "PVC up" and (exist,new) = 1,0
*/
-#include
#include
#include
#include
@@ -36,12 +35,95 @@
#include
#include
+#undef DEBUG_PKT
+#undef DEBUG_ECN
-__inline__ pvc_device* find_pvc(hdlc_device *hdlc, u16 dlci)
+#define MAXLEN_LMISTAT 20 /* max size of status enquiry frame */
+
+#define PVC_STATE_NEW 0x01
+#define PVC_STATE_ACTIVE 0x02
+#define PVC_STATE_FECN 0x08 /* FECN condition */
+#define PVC_STATE_BECN 0x10 /* BECN condition */
+
+
+#define FR_UI 0x03
+#define FR_PAD 0x00
+
+#define NLPID_IP 0xCC
+#define NLPID_IPV6 0x8E
+#define NLPID_SNAP 0x80
+#define NLPID_PAD 0x00
+#define NLPID_Q933 0x08
+
+
+#define LMI_DLCI 0 /* LMI DLCI */
+#define LMI_PROTO 0x08
+#define LMI_CALLREF 0x00 /* Call Reference */
+#define LMI_ANSI_LOCKSHIFT 0x95 /* ANSI lockshift */
+#define LMI_REPTYPE 1 /* report type */
+#define LMI_CCITT_REPTYPE 0x51
+#define LMI_ALIVE 3 /* keep alive */
+#define LMI_CCITT_ALIVE 0x53
+#define LMI_PVCSTAT 7 /* pvc status */
+#define LMI_CCITT_PVCSTAT 0x57
+#define LMI_FULLREP 0 /* full report */
+#define LMI_INTEGRITY 1 /* link integrity report */
+#define LMI_SINGLE 2 /* single pvc report */
+#define LMI_STATUS_ENQUIRY 0x75
+#define LMI_STATUS 0x7D /* reply */
+
+#define LMI_REPT_LEN 1 /* report type element length */
+#define LMI_INTEG_LEN 2 /* link integrity element length */
+
+#define LMI_LENGTH 13 /* standard LMI frame length */
+#define LMI_ANSI_LENGTH 14
+
+
+typedef struct {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+ unsigned ea1: 1;
+ unsigned cr: 1;
+ unsigned dlcih: 6;
+
+ unsigned ea2: 1;
+ unsigned de: 1;
+ unsigned becn: 1;
+ unsigned fecn: 1;
+ unsigned dlcil: 4;
+#else
+ unsigned dlcih: 6;
+ unsigned cr: 1;
+ unsigned ea1: 1;
+
+ unsigned dlcil: 4;
+ unsigned fecn: 1;
+ unsigned becn: 1;
+ unsigned de: 1;
+ unsigned ea2: 1;
+#endif
+}__attribute__ ((packed)) fr_hdr;
+
+
+static inline u16 q922_to_dlci(u8 *hdr)
+{
+ return ((hdr[0] & 0xFC) << 2) | ((hdr[1] & 0xF0) >> 4);
+}
+
+
+
+static inline void dlci_to_q922(u8 *hdr, u16 dlci)
+{
+ hdr[0] = (dlci >> 2) & 0xFC;
+ hdr[1] = ((dlci << 4) & 0xF0) | 0x01;
+}
+
+
+
+static inline pvc_device* find_pvc(hdlc_device *hdlc, u16 dlci)
{
pvc_device *pvc = hdlc->state.fr.first_pvc;
- while(pvc) {
+ while (pvc) {
if (pvc->dlci == dlci)
return pvc;
if (pvc->dlci > dlci)
@@ -53,15 +135,15 @@
}
-__inline__ pvc_device* add_pvc(hdlc_device *hdlc, u16 dlci)
+static inline pvc_device* add_pvc(hdlc_device *hdlc, u16 dlci)
{
pvc_device *pvc, **pvc_p = &hdlc->state.fr.first_pvc;
- while(*pvc_p) {
+ while (*pvc_p) {
if ((*pvc_p)->dlci == dlci)
return *pvc_p;
if ((*pvc_p)->dlci > dlci)
- break; /* the listed is sorted */
+ break; /* the list is sorted */
pvc_p = &(*pvc_p)->next;
}
@@ -78,17 +160,17 @@
}
-__inline__ int pvc_is_used(pvc_device *pvc)
+static inline int pvc_is_used(pvc_device *pvc)
{
return pvc->main != NULL || pvc->ether != NULL;
}
-__inline__ void delete_unused_pvcs(hdlc_device *hdlc)
+static inline void delete_unused_pvcs(hdlc_device *hdlc)
{
pvc_device **pvc_p = &hdlc->state.fr.first_pvc;
- while(*pvc_p) {
+ while (*pvc_p) {
if (!pvc_is_used(*pvc_p)) {
pvc_device *pvc = *pvc_p;
*pvc_p = pvc->next;
@@ -100,7 +182,7 @@
}
-__inline__ struct net_device** get_dev_p(pvc_device *pvc, int type)
+static inline struct net_device** get_dev_p(pvc_device *pvc, int type)
{
if (type == ARPHRD_ETHER)
return &pvc->ether;
@@ -109,20 +191,19 @@
}
-__inline__ u16 status_to_dlci(u8 *status, int *active, int *new)
+static inline u16 status_to_dlci(u8 *status, int *active, int *new)
{
*new = (status[2] & 0x08) ? 1 : 0;
*active = (status[2] & 0x02) ? 1 : 0;
- return ((status[0] & 0x3F)<<4) | ((status[1] & 0x78)>>3);
+ return ((status[0] & 0x3F) << 4) | ((status[1] & 0x78) >> 3);
}
-__inline__ void dlci_to_status(u16 dlci, u8 *status,
- int active, int new)
+static inline void dlci_to_status(u16 dlci, u8 *status, int active, int new)
{
- status[0] = (dlci>>4) & 0x3F;
- status[1] = ((dlci<<3) & 0x78) | 0x80;
+ status[0] = (dlci >> 4) & 0x3F;
+ status[1] = ((dlci << 3) & 0x78) | 0x80;
status[2] = 0x80;
if (new)
@@ -138,7 +219,7 @@
u16 head_len;
struct sk_buff *skb = *skb_p;
- switch(skb->protocol) {
+ switch (skb->protocol) {
case __constant_ntohs(ETH_P_IP):
head_len = 4;
skb_push(skb, head_len);
@@ -260,7 +341,7 @@
}
-__inline__ struct net_device_stats *pvc_get_stats(struct net_device *dev)
+static inline struct net_device_stats *pvc_get_stats(struct net_device *dev)
{
return (struct net_device_stats *)
((char *)dev + sizeof(struct net_device));
@@ -632,8 +713,7 @@
pvc->state.exist = 1;
pvc->state.deleted = 0;
if (active != pvc->state.active ||
- new != pvc->state.new ||
- !pvc->state.exist) {
+ new != pvc->state.new) {
pvc->state.new = new;
pvc->state.active = active;
fr_log_dlci_active(pvc);
@@ -699,7 +779,7 @@
pvc = find_pvc(hdlc, dlci);
if (!pvc) {
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
printk(KERN_INFO "%s: No PVC for received frame's DLCI %d\n",
hdlc_to_name(hdlc), dlci);
#endif
@@ -708,7 +788,7 @@
}
if (pvc->state.fecn != fh->fecn) {
-#ifdef CONFIG_HDLC_DEBUG_ECN
+#ifdef DEBUG_ECN
printk(KERN_DEBUG "%s: DLCI %d FECN O%s\n", hdlc_to_name(pvc),
dlci, fh->fecn ? "N" : "FF");
#endif
@@ -716,7 +796,7 @@
}
if (pvc->state.becn != fh->becn) {
-#ifdef CONFIG_HDLC_DEBUG_ECN
+#ifdef DEBUG_ECN
printk(KERN_DEBUG "%s: DLCI %d BECN O%s\n", hdlc_to_name(pvc),
dlci, fh->becn ? "N" : "FF");
#endif
@@ -820,7 +900,7 @@
if (hdlc->state.fr.settings.lmi != LMI_NONE)
del_timer_sync(&hdlc->state.fr.timer);
- while(pvc) { /* Shutdown all PVCs for this FRAD */
+ while (pvc) { /* Shutdown all PVCs for this FRAD */
if (pvc->main)
dev_close(pvc->main);
if (pvc->ether)
@@ -941,7 +1021,7 @@
static void fr_destroy(hdlc_device *hdlc)
{
pvc_device *pvc = hdlc->state.fr.first_pvc;
- while(pvc) {
+ while (pvc) {
pvc_device *next = pvc->next;
if (pvc->main) {
unregister_netdevice(pvc->main);
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_generic.c linux-2.4.23-bk19/drivers/net/wan/hdlc_generic.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_generic.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_generic.c 2003-12-30 02:50:29.000000000 -0800
@@ -33,7 +33,7 @@
#include
-static const char* version = "HDLC support module revision 1.14";
+static const char* version = "HDLC support module revision 1.14b";
static int hdlc_change_mtu(struct net_device *dev, int new_mtu)
@@ -145,7 +145,7 @@
hdlc->proto_detach = NULL;
result = dev_alloc_name(dev, "hdlc%d");
- if (result<0)
+ if (result < 0)
return result;
result = register_netdev(dev);
@@ -177,8 +177,7 @@
EXPORT_SYMBOL(register_hdlc_device);
EXPORT_SYMBOL(unregister_hdlc_device);
-struct packet_type hdlc_packet_type=
-{
+static struct packet_type hdlc_packet_type = {
__constant_htons(ETH_P_HDLC),
NULL,
hdlc_rcv,
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_ppp.c linux-2.4.23-bk19/drivers/net/wan/hdlc_ppp.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_ppp.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_ppp.c 2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
* as published by the Free Software Foundation.
*/
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_raw.c linux-2.4.23-bk19/drivers/net/wan/hdlc_raw.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_raw.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_raw.c 2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
* as published by the Free Software Foundation.
*/
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_raw_eth.c linux-2.4.23-bk19/drivers/net/wan/hdlc_raw_eth.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_raw_eth.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_raw_eth.c 2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
* as published by the Free Software Foundation.
*/
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_x25.c linux-2.4.23-bk19/drivers/net/wan/hdlc_x25.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_x25.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_x25.c 2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
* as published by the Free Software Foundation.
*/
-#include
#include
#include
#include
diff -urN linux-2.4.23-bk18/drivers/net/wan/n2.c linux-2.4.23-bk19/drivers/net/wan/n2.c
--- linux-2.4.23-bk18/drivers/net/wan/n2.c 2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/n2.c 2003-12-30 02:50:29.000000000 -0800
@@ -16,7 +16,6 @@
* SDL Inc. PPP/HDLC/CISCO driver
*/
-#include
#include
#include
#include
@@ -36,6 +35,9 @@
static const char* version = "SDL RISCom/N2 driver version: 1.14";
static const char* devname = "RISCom/N2";
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
#define USE_WINDOWSIZE 16384
#define USE_BUS16BITS 1
#define CLOCK_BASE 9830400 /* 9.8304 MHz */
@@ -257,7 +259,7 @@
hdlc_device *hdlc = dev_to_hdlc(dev);
port_t *port = hdlc_to_port(hdlc);
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
if (cmd == SIOCDEVPRIVATE) {
sca_dump_rings(hdlc);
return 0;
@@ -415,7 +417,7 @@
card->buff_offset = (valid0 + valid1) * sizeof(pkt_desc) *
(card->tx_ring_buffers + card->rx_ring_buffers);
- printk(KERN_DEBUG "n2: RISCom/N2 %u KB RAM, IRQ%u, "
+ printk(KERN_INFO "n2: RISCom/N2 %u KB RAM, IRQ%u, "
"using %u TX + %u RX packets rings\n", card->ram_size / 1024,
card->irq, card->tx_ring_buffers, card->rx_ring_buffers);
@@ -446,7 +448,7 @@
spin_lock_init(&port->lock);
dev->irq = irq;
dev->mem_start = winbase;
- dev->mem_end = winbase + USE_WINDOWSIZE-1;
+ dev->mem_end = winbase + USE_WINDOWSIZE - 1;
dev->tx_queue_len = 50;
dev->do_ioctl = n2_ioctl;
dev->open = n2_open;
diff -urN linux-2.4.23-bk18/drivers/net/wan/pci200syn.c linux-2.4.23-bk19/drivers/net/wan/pci200syn.c
--- linux-2.4.23-bk18/drivers/net/wan/pci200syn.c 1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/pci200syn.c 2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,476 @@
+/*
+ * Goramo PCI200SYN synchronous serial card driver for Linux
+ *
+ * Copyright (C) 2002-2003 Krzysztof Halasa
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ *
+ * For information see http://hq.pm.waw.pl/hdlc/
+ *
+ * Sources of information:
+ * Hitachi HD64572 SCA-II User's Manual
+ * PLX Technology Inc. PCI9052 Data Book
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "hd64572.h"
+
+static const char* version = "Goramo PCI200SYN driver version: 1.14c";
+static const char* devname = "PCI200SYN";
+
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
+#define PCI200SYN_PLX_SIZE 0x80 /* PLX control window size (128b) */
+#define PCI200SYN_SCA_SIZE 0x400 /* SCA window size (1Kb) */
+#define ALL_PAGES_ALWAYS_MAPPED
+#define NEED_DETECT_RAM
+#define MAX_TX_BUFFERS 10
+
+static int pci_clock_freq = 33000000;
+#define CLOCK_BASE pci_clock_freq
+
+#define PCI_VENDOR_ID_GORAMO 0x10B5 /* uses PLX:9050 ID - this card */
+#define PCI_DEVICE_ID_PCI200SYN 0x9050 /* doesn't have its own ID */
+
+
+/*
+ * PLX PCI9052 local configuration and shared runtime registers.
+ * This structure can be used to access 9052 registers (memory mapped).
+ */
+typedef struct {
+ u32 loc_addr_range[4]; /* 00-0Ch : Local Address Ranges */
+ u32 loc_rom_range; /* 10h : Local ROM Range */
+ u32 loc_addr_base[4]; /* 14-20h : Local Address Base Addrs */
+ u32 loc_rom_base; /* 24h : Local ROM Base */
+ u32 loc_bus_descr[4]; /* 28-34h : Local Bus Descriptors */
+ u32 rom_bus_descr; /* 38h : ROM Bus Descriptor */
+ u32 cs_base[4]; /* 3C-48h : Chip Select Base Addrs */
+ u32 intr_ctrl_stat; /* 4Ch : Interrupt Control/Status */
+ u32 init_ctrl; /* 50h : EEPROM ctrl, Init Ctrl, etc */
+}plx9052;
+
+
+
+typedef struct port_s {
+ hdlc_device hdlc; /* HDLC device struct - must be first */
+ struct card_s *card;
+ spinlock_t lock; /* TX lock */
+ sync_serial_settings settings;
+ int rxpart; /* partial frame received, next frame invalid*/
+ unsigned short encoding;
+ unsigned short parity;
+ u16 rxin; /* rx ring buffer 'in' pointer */
+ u16 txin; /* tx ring buffer 'in' and 'last' pointers */
+ u16 txlast;
+ u8 rxs, txs, tmc; /* SCA registers */
+ u8 phy_node; /* physical port # - 0 or 1 */
+}port_t;
+
+
+
+typedef struct card_s {
+ u8* rambase; /* buffer memory base (virtual) */
+ u8* scabase; /* SCA memory base (virtual) */
+ plx9052* plxbase; /* PLX registers memory base (virtual) */
+ u16 rx_ring_buffers; /* number of buffers in a ring */
+ u16 tx_ring_buffers;
+ u16 buff_offset; /* offset of first buffer of first channel */
+ u8 irq; /* interrupt request level */
+
+ port_t ports[2];
+}card_t;
+
+
+#define sca_in(reg, card) readb(card->scabase + (reg))
+#define sca_out(value, reg, card) writeb(value, card->scabase + (reg))
+#define sca_inw(reg, card) readw(card->scabase + (reg))
+#define sca_outw(value, reg, card) writew(value, card->scabase + (reg))
+#define sca_inl(reg, card) readl(card->scabase + (reg))
+#define sca_outl(value, reg, card) writel(value, card->scabase + (reg))
+
+#define port_to_card(port) (port->card)
+#define log_node(port) (port->phy_node)
+#define phy_node(port) (port->phy_node)
+#define winbase(card) (card->rambase)
+#define get_port(card, port) (&card->ports[port])
+#define sca_flush(card) (sca_in(IER0, card));
+
+static inline void new_memcpy_toio(char *dest, char *src, int length)
+{
+ int len;
+ do {
+ len = length > 256 ? 256 : length;
+ memcpy_toio(dest, src, len);
+ dest += len;
+ src += len;
+ length -= len;
+ readb(dest);
+ } while (len);
+}
+
+#undef memcpy_toio
+#define memcpy_toio new_memcpy_toio
+
+#include "hd6457x.c"
+
+
+static void pci200_set_iface(port_t *port)
+{
+ card_t *card = port->card;
+ u16 msci = get_msci(port);
+ u8 rxs = port->rxs & CLK_BRG_MASK;
+ u8 txs = port->txs & CLK_BRG_MASK;
+
+ sca_out(EXS_TES1, (phy_node(port) ? MSCI1_OFFSET : MSCI0_OFFSET) + EXS,
+ port_to_card(port));
+ switch(port->settings.clock_type) {
+ case CLOCK_INT:
+ rxs |= CLK_BRG; /* BRG output */
+ txs |= CLK_PIN_OUT | CLK_TX_RXCLK; /* RX clock */
+ break;
+
+ case CLOCK_TXINT:
+ rxs |= CLK_LINE; /* RXC input */
+ txs |= CLK_PIN_OUT | CLK_BRG; /* BRG output */
+ break;
+
+ case CLOCK_TXFROMRX:
+ rxs |= CLK_LINE; /* RXC input */
+ txs |= CLK_PIN_OUT | CLK_TX_RXCLK; /* RX clock */
+ break;
+
+ default: /* EXTernal clock */
+ rxs |= CLK_LINE; /* RXC input */
+ txs |= CLK_PIN_OUT | CLK_LINE; /* TXC input */
+ break;
+ }
+
+ port->rxs = rxs;
+ port->txs = txs;
+ sca_out(rxs, msci + RXS, card);
+ sca_out(txs, msci + TXS, card);
+ sca_set_port(port);
+}
+
+
+
+static int pci200_open(struct net_device *dev)
+{
+ hdlc_device *hdlc = dev_to_hdlc(dev);
+ port_t *port = hdlc_to_port(hdlc);
+
+ int result = hdlc_open(hdlc);
+ if (result)
+ return result;
+
+ MOD_INC_USE_COUNT;
+ sca_open(hdlc);
+ pci200_set_iface(port);
+ sca_flush(port_to_card(port));
+ return 0;
+}
+
+
+
+static int pci200_close(struct net_device *dev)
+{
+ hdlc_device *hdlc = dev_to_hdlc(dev);
+ sca_close(hdlc);
+ sca_flush(port_to_card(dev_to_port(dev)));
+ hdlc_close(hdlc);
+ MOD_DEC_USE_COUNT;
+ return 0;
+}
+
+
+
+static int pci200_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+ const size_t size = sizeof(sync_serial_settings);
+ sync_serial_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.sync;
+ hdlc_device *hdlc = dev_to_hdlc(dev);
+ port_t *port = hdlc_to_port(hdlc);
+
+#ifdef DEBUG_RINGS
+ if (cmd == SIOCDEVPRIVATE) {
+ sca_dump_rings(hdlc);
+ return 0;
+ }
+#endif
+ if (cmd != SIOCWANDEV)
+ return hdlc_ioctl(dev, ifr, cmd);
+
+ switch(ifr->ifr_settings.type) {
+ case IF_GET_IFACE:
+ ifr->ifr_settings.type = IF_IFACE_V35;
+ if (ifr->ifr_settings.size < size) {
+ ifr->ifr_settings.size = size; /* data size wanted */
+ return -ENOBUFS;
+ }
+ if (copy_to_user(line, &port->settings, size))
+ return -EFAULT;
+ return 0;
+
+ case IF_IFACE_V35:
+ case IF_IFACE_SYNC_SERIAL:
+ if (!capable(CAP_NET_ADMIN))
+ return -EPERM;
+
+ if (copy_from_user(&new_line, line, size))
+ return -EFAULT;
+
+ if (new_line.clock_type != CLOCK_EXT &&
+ new_line.clock_type != CLOCK_TXFROMRX &&
+ new_line.clock_type != CLOCK_INT &&
+ new_line.clock_type != CLOCK_TXINT)
+ return -EINVAL; /* No such clock setting */
+
+ if (new_line.loopback != 0 && new_line.loopback != 1)
+ return -EINVAL;
+
+ memcpy(&port->settings, &new_line, size); /* Update settings */
+ pci200_set_iface(port);
+ sca_flush(port_to_card(port));
+ return 0;
+
+ default:
+ return hdlc_ioctl(dev, ifr, cmd);
+ }
+}
+
+
+
+static void pci200_pci_remove_one(struct pci_dev *pdev)
+{
+ int i;
+ card_t *card = pci_get_drvdata(pdev);
+
+ for(i = 0; i < 2; i++)
+ if (card->ports[i].card)
+ unregister_hdlc_device(&card->ports[i].hdlc);
+
+ if (card->irq)
+ free_irq(card->irq, card);
+
+ if (card->rambase)
+ iounmap(card->rambase);
+ if (card->scabase)
+ iounmap(card->scabase);
+ if (card->plxbase)
+ iounmap(card->plxbase);
+
+ pci_release_regions(pdev);
+ pci_disable_device(pdev);
+ pci_set_drvdata(pdev, NULL);
+ kfree(card);
+}
+
+
+
+static int __devinit pci200_pci_init_one(struct pci_dev *pdev,
+ const struct pci_device_id *ent)
+{
+ card_t *card;
+ u8 rev_id;
+ u32 *p;
+ int i;
+ u32 ramsize;
+ u32 ramphys; /* buffer memory base */
+ u32 scaphys; /* SCA memory base */
+ u32 plxphys; /* PLX registers memory base */
+
+#ifndef MODULE
+ static int printed_version;
+ if (!printed_version++)
+ printk(KERN_INFO "%s\n", version);
+#endif
+
+ i = pci_enable_device(pdev);
+ if (i)
+ return i;
+
+ i = pci_request_regions(pdev, "PCI200SYN");
+ if (i) {
+ pci_disable_device(pdev);
+ return i;
+ }
+
+ card = kmalloc(sizeof(card_t), GFP_KERNEL);
+ if (card == NULL) {
+ printk(KERN_ERR "pci200syn: unable to allocate memory\n");
+ pci_release_regions(pdev);
+ pci_disable_device(pdev);
+ return -ENOBUFS;
+ }
+ memset(card, 0, sizeof(card_t));
+ pci_set_drvdata(pdev, card);
+
+ pci_read_config_byte(pdev, PCI_REVISION_ID, &rev_id);
+ if (pci_resource_len(pdev, 0) != PCI200SYN_PLX_SIZE ||
+ pci_resource_len(pdev, 2) != PCI200SYN_SCA_SIZE ||
+ pci_resource_len(pdev, 3) < 16384) {
+ printk(KERN_ERR "pci200syn: invalid card EEPROM parameters\n");
+ pci200_pci_remove_one(pdev);
+ return -EFAULT;
+ }
+
+ plxphys = pci_resource_start(pdev,0) & PCI_BASE_ADDRESS_MEM_MASK;
+ card->plxbase = ioremap(plxphys, PCI200SYN_PLX_SIZE);
+
+ scaphys = pci_resource_start(pdev,2) & PCI_BASE_ADDRESS_MEM_MASK;
+ card->scabase = ioremap(scaphys, PCI200SYN_SCA_SIZE);
+
+ ramphys = pci_resource_start(pdev,3) & PCI_BASE_ADDRESS_MEM_MASK;
+ card->rambase = ioremap(ramphys, pci_resource_len(pdev,3));
+
+ if (card->plxbase == NULL ||
+ card->scabase == NULL ||
+ card->rambase == NULL) {
+ printk(KERN_ERR "pci200syn: ioremap() failed\n");
+ pci200_pci_remove_one(pdev);
+ }
+
+ /* Reset PLX */
+ p = &card->plxbase->init_ctrl;
+ writel(readl(p) | 0x40000000, p);
+ readl(p); /* Flush the write - do not use sca_flush */
+ udelay(1);
+
+ writel(readl(p) & ~0x40000000, p);
+ readl(p); /* Flush the write - do not use sca_flush */
+ udelay(1);
+
+ ramsize = sca_detect_ram(card, card->rambase,
+ pci_resource_len(pdev, 3));
+
+ /* number of TX + RX buffers for one port - this is dual port card */
+ i = ramsize / (2 * (sizeof(pkt_desc) + HDLC_MAX_MRU));
+ card->tx_ring_buffers = min(i / 2, MAX_TX_BUFFERS);
+ card->rx_ring_buffers = i - card->tx_ring_buffers;
+
+ card->buff_offset = 2 * sizeof(pkt_desc) * (card->tx_ring_buffers +
+ card->rx_ring_buffers);
+
+ printk(KERN_INFO "pci200syn: %u KB RAM at 0x%x, IRQ%u, using %u TX +"
+ " %u RX packets rings\n", ramsize / 1024, ramphys,
+ pdev->irq, card->tx_ring_buffers, card->rx_ring_buffers);
+
+ if (card->tx_ring_buffers < 1) {
+ printk(KERN_ERR "pci200syn: RAM test failed\n");
+ pci200_pci_remove_one(pdev);
+ return -EFAULT;
+ }
+
+ /* Enable interrupts on the PCI bridge */
+ p = &card->plxbase->intr_ctrl_stat;
+ writew(readw(p) | 0x0040, p);
+
+ /* Allocate IRQ */
+ if (request_irq(pdev->irq, sca_intr, SA_SHIRQ, devname, card)) {
+ printk(KERN_WARNING "pci200syn: could not allocate IRQ%d.\n",
+ pdev->irq);
+ pci200_pci_remove_one(pdev);
+ return -EBUSY;
+ }
+ card->irq = pdev->irq;
+
+ sca_init(card, 0);
+
+ for(i = 0; i < 2; i++) {
+ port_t *port = &card->ports[i];
+ struct net_device *dev = hdlc_to_dev(&port->hdlc);
+ port->phy_node = i;
+
+ spin_lock_init(&port->lock);
+ SET_MODULE_OWNER(dev);
+ dev->irq = card->irq;
+ dev->mem_start = ramphys;
+ dev->mem_end = ramphys + ramsize - 1;
+ dev->tx_queue_len = 50;
+ dev->do_ioctl = pci200_ioctl;
+ dev->open = pci200_open;
+ dev->stop = pci200_close;
+ port->hdlc.attach = sca_attach;
+ port->hdlc.xmit = sca_xmit;
+ port->settings.clock_type = CLOCK_EXT;
+ if (register_hdlc_device(&port->hdlc)) {
+ printk(KERN_ERR "pci200syn: unable to register hdlc "
+ "device\n");
+ pci200_pci_remove_one(pdev);
+ return -ENOBUFS;
+ }
+ port->card = card;
+ sca_init_sync_port(port); /* Set up SCA memory */
+
+ printk(KERN_INFO "%s: PCI200SYN node %d\n",
+ hdlc_to_name(&port->hdlc), port->phy_node);
+ }
+
+ sca_flush(card);
+ return 0;
+}
+
+
+
+static struct pci_device_id pci200_pci_tbl[] __devinitdata = {
+ { PCI_VENDOR_ID_GORAMO, PCI_DEVICE_ID_PCI200SYN, PCI_ANY_ID,
+ PCI_ANY_ID, 0, 0, 0 },
+ { 0, }
+};
+
+
+static struct pci_driver pci200_pci_driver = {
+ name: "PCI200SYN",
+ id_table: pci200_pci_tbl,
+ probe: pci200_pci_init_one,
+ remove: pci200_pci_remove_one,
+};
+
+
+static int __init pci200_init_module(void)
+{
+#ifdef MODULE
+ printk(KERN_INFO "%s\n", version);
+#endif
+ if (pci_clock_freq < 1000000 || pci_clock_freq > 80000000) {
+ printk(KERN_ERR "pci200syn: Invalid PCI clock frequency\n");
+ return -EINVAL;
+ }
+ return pci_module_init(&pci200_pci_driver);
+}
+
+
+
+static void __exit pci200_cleanup_module(void)
+{
+ pci_unregister_driver(&pci200_pci_driver);
+}
+
+MODULE_AUTHOR("Krzysztof Halasa ");
+MODULE_DESCRIPTION("Goramo PCI200SYN serial port driver");
+MODULE_LICENSE("GPL v2");
+MODULE_DEVICE_TABLE(pci, pci200_pci_tbl);
+MODULE_PARM(pci_clock_freq, "i");
+MODULE_PARM_DESC(pci_clock_freq, "System PCI clock frequency in Hz");
+EXPORT_NO_SYMBOLS;
+module_init(pci200_init_module);
+module_exit(pci200_cleanup_module);
diff -urN linux-2.4.23-bk18/drivers/video/clgenfb.c linux-2.4.23-bk19/drivers/video/clgenfb.c
--- linux-2.4.23-bk18/drivers/video/clgenfb.c 2003-06-13 07:51:37.000000000 -0700
+++ linux-2.4.23-bk19/drivers/video/clgenfb.c 2003-12-30 02:50:30.000000000 -0800
@@ -2547,7 +2547,7 @@
pdev = clgen_pci_dev_get (btype);
if (!pdev) {
- printk (KERN_ERR " Couldn't find PCI device\n");
+ printk (KERN_INFO "clgenfb: couldn't find Cirrus Logic PCI device\n");
DPRINTK ("EXIT, returning 1\n");
return 1;
}
diff -urN linux-2.4.23-bk18/drivers/video/hgafb.c linux-2.4.23-bk19/drivers/video/hgafb.c
--- linux-2.4.23-bk18/drivers/video/hgafb.c 2001-11-12 09:46:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/video/hgafb.c 2003-12-30 02:50:30.000000000 -0800
@@ -704,7 +704,7 @@
int __init hgafb_init(void)
{
if (! hga_card_detect()) {
- printk(KERN_ERR "hgafb: HGA card not detected.\n");
+ printk(KERN_INFO "hgafb: HGA card not detected.\n");
return -EINVAL;
}
diff -urN linux-2.4.23-bk18/include/asm-ppc/pc_serial.h linux-2.4.23-bk19/include/asm-ppc/pc_serial.h
--- linux-2.4.23-bk18/include/asm-ppc/pc_serial.h 2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.23-bk19/include/asm-ppc/pc_serial.h 2003-12-30 02:50:30.000000000 -0800
@@ -26,15 +26,6 @@
#define RS_TABLE_SIZE 4
#endif
-/* Standard COM flags (except for COM4, because of the 8514 problem) */
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
-#endif
-
#ifdef CONFIG_SERIAL_MANY_PORTS
#define FOURPORT_FLAGS ASYNC_FOURPORT
#define ACCENT_FLAGS 0
@@ -60,10 +51,10 @@
#define STD_SERIAL_PORT_DEFNS \
/* UART CLK PORT IRQ FLAGS */ \
- { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \
- { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \
- { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \
- { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */
+ { 0, BASE_BAUD, 0x3F8, 4, ASYNC_BOOT_AUTOCONF }, /* ttyS0 */ \
+ { 0, BASE_BAUD, 0x2F8, 3, ASYNC_BOOT_AUTOCONF }, /* ttyS1 */ \
+ { 0, BASE_BAUD, 0x3E8, 4, ASYNC_BOOT_AUTOCONF }, /* ttyS2 */ \
+ { 0, BASE_BAUD, 0x2E8, 3, ASYNC_BOOT_AUTOCONF }, /* ttyS3 */
#ifdef CONFIG_SERIAL_MANY_PORTS
diff -urN linux-2.4.23-bk18/include/asm-ppc/serial.h linux-2.4.23-bk19/include/asm-ppc/serial.h
--- linux-2.4.23-bk18/include/asm-ppc/serial.h 2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.23-bk19/include/asm-ppc/serial.h 2003-12-30 02:50:30.000000000 -0800
@@ -12,8 +12,12 @@
#include
#elif defined(CONFIG_LOPEC)
#include
+#elif defined(CONFIG_SANDPOINT)
+#include
#elif defined(CONFIG_SPRUCE)
#include
+#elif defined(CONFIG_PRPMC750)
+#include
#elif defined(CONFIG_4xx)
#include
#else
diff -urN linux-2.4.23-bk18/include/linux/hdlc.h linux-2.4.23-bk19/include/linux/hdlc.h
--- linux-2.4.23-bk18/include/linux/hdlc.h 2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.23-bk19/include/linux/hdlc.h 2003-12-30 02:50:30.000000000 -0800
@@ -42,6 +42,9 @@
#define LMI_ANSI 2 /* ANSI Annex D */
#define LMI_CCITT 3 /* ITU-T Annex A */
+#define HDLC_MAX_MTU 1500 /* Ethernet 1500 bytes */
+#define HDLC_MAX_MRU (HDLC_MAX_MTU + 10 + 14 + 4) /* for ETH+VLAN over FR */
+
#ifdef __KERNEL__
@@ -50,78 +53,6 @@
#include
#include
-#define HDLC_MAX_MTU 1500 /* Ethernet 1500 bytes */
-#define HDLC_MAX_MRU (HDLC_MAX_MTU + 10 + 14 + 4) /* for ETH+VLAN over FR */
-
-#define MAXLEN_LMISTAT 20 /* max size of status enquiry frame */
-
-#define PVC_STATE_NEW 0x01
-#define PVC_STATE_ACTIVE 0x02
-#define PVC_STATE_FECN 0x08 /* FECN condition */
-#define PVC_STATE_BECN 0x10 /* BECN condition */
-
-
-#define FR_UI 0x03
-#define FR_PAD 0x00
-
-#define NLPID_IP 0xCC
-#define NLPID_IPV6 0x8E
-#define NLPID_SNAP 0x80
-#define NLPID_PAD 0x00
-#define NLPID_Q933 0x08
-
-
-#define LMI_DLCI 0 /* LMI DLCI */
-#define LMI_PROTO 0x08
-#define LMI_CALLREF 0x00 /* Call Reference */
-#define LMI_ANSI_LOCKSHIFT 0x95 /* ANSI lockshift */
-#define LMI_REPTYPE 1 /* report type */
-#define LMI_CCITT_REPTYPE 0x51
-#define LMI_ALIVE 3 /* keep alive */
-#define LMI_CCITT_ALIVE 0x53
-#define LMI_PVCSTAT 7 /* pvc status */
-#define LMI_CCITT_PVCSTAT 0x57
-#define LMI_FULLREP 0 /* full report */
-#define LMI_INTEGRITY 1 /* link integrity report */
-#define LMI_SINGLE 2 /* single pvc report */
-#define LMI_STATUS_ENQUIRY 0x75
-#define LMI_STATUS 0x7D /* reply */
-
-#define LMI_REPT_LEN 1 /* report type element length */
-#define LMI_INTEG_LEN 2 /* link integrity element length */
-
-#define LMI_LENGTH 13 /* standard LMI frame length */
-#define LMI_ANSI_LENGTH 14
-
-
-
-typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned ea1 : 1;
- unsigned cr : 1;
- unsigned dlcih: 6;
-
- unsigned ea2 : 1;
- unsigned de : 1;
- unsigned becn : 1;
- unsigned fecn : 1;
- unsigned dlcil: 4;
-#elif defined (__BIG_ENDIAN_BITFIELD)
- unsigned dlcih: 6;
- unsigned cr : 1;
- unsigned ea1 : 1;
-
- unsigned dlcil: 4;
- unsigned fecn : 1;
- unsigned becn : 1;
- unsigned de : 1;
- unsigned ea2 : 1;
-#else
-#error "Please fix "
-#endif
-}__attribute__ ((packed)) fr_hdr;
-
-
typedef struct { /* Used in Cisco and PPP mode */
u8 address;
@@ -271,26 +202,11 @@
}
-static __inline__ u16 q922_to_dlci(u8 *hdr)
-{
- return ((hdr[0] & 0xFC) << 2) | ((hdr[1] & 0xF0) >> 4);
-}
-
-
-
-static __inline__ void dlci_to_q922(u8 *hdr, u16 dlci)
-{
- hdr[0] = (dlci >> 2) & 0xFC;
- hdr[1] = ((dlci << 4) & 0xF0) | 0x01;
-}
-
-
-
static __inline__ void debug_frame(const struct sk_buff *skb)
{
int i;
- for (i=0; ilen; i++) {
+ for (i=0; i < skb->len; i++) {
if (i == 100) {
printk("...\n");
return;
diff -urN linux-2.4.23-bk18/include/linux/i2c.h linux-2.4.23-bk19/include/linux/i2c.h
--- linux-2.4.23-bk18/include/linux/i2c.h 2003-06-13 07:51:38.000000000 -0700
+++ linux-2.4.23-bk19/include/linux/i2c.h 2003-12-30 02:50:30.000000000 -0800
@@ -42,17 +42,7 @@
/* --- Includes and compatibility declarations ------------------------ */
-#include
-#ifndef KERNEL_VERSION
-#define KERNEL_VERSION(a,b,c) (((a) << 16) | ((b) << 8) | (c))
-#endif
-
-#include /* for 2.2.xx */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,0,25)
-#include
-#else
#include
-#endif
#include
/* --- General options ------------------------------------------------ */
@@ -226,10 +216,6 @@
u32 (*functionality) (struct i2c_adapter *);
};
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
-struct proc_dir_entry;
-#endif
-
/*
* i2c_adapter is the structure used to identify a physical i2c bus along
* with the access algorithms necessary to access it.
@@ -267,9 +253,6 @@
#ifdef CONFIG_PROC_FS
/* No need to set this when you initialize the adapter */
int inode;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
- struct proc_dir_entry *proc_entry;
-#endif
#endif /* def CONFIG_PROC_FS */
};