]> git.neil.brown.name Git - history.git/commitdiff
- pre1: (for ISDN synchronization _ONLY_! Not complete!) 2.4.0-test12pre1
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:40:16 +0000 (15:40 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:40:16 +0000 (15:40 -0500)
 - Byron Stanoszek: correct decimal precision for CPU MHz in
   /proc/cpuinfo
 - Ollie Lho: SiS pirq routing.
 - Andries Brouwer: isofs cleanups
 - Matt Kraai: /proc read() on directories should return EISDIR, not EINVAL
 - Linus: be stricter about what we accept as a PCI bridge setup.
 - Linus: always set PCI interrupts to be level-triggered when we enable them.
 - Linus: updated PageDirty and swap cache handling
 - Peter Anvin: update A20 code to work without keyboard controller
 - Kai Germaschewski: ISDN updates
 - Russell King: ARM updates
 - Geert Uytterhoeven: m68k updates

235 files changed:
Documentation/Configure.help
Documentation/arm/README
Documentation/arm/SA1100/GraphicsClient [new file with mode: 0644]
Documentation/arm/SA1100/Pangolin [new file with mode: 0644]
Documentation/arm/SA1100/ThinClient [deleted file]
Documentation/arm/SA1100/serial_UART [new file with mode: 0644]
Documentation/isdn/INTERFACE.fax
Documentation/isdn/README.HiSax
Makefile
arch/arm/boot/Makefile
arch/arm/boot/compressed/Makefile
arch/arm/def-configs/a5k
arch/arm/def-configs/assabet
arch/arm/def-configs/brutus
arch/arm/def-configs/cerf
arch/arm/def-configs/ebsa110
arch/arm/def-configs/footbridge
arch/arm/def-configs/graphicsclient
arch/arm/def-configs/integrator [new file with mode: 0644]
arch/arm/def-configs/neponset [new file with mode: 0644]
arch/arm/def-configs/pangolin [new file with mode: 0644]
arch/arm/def-configs/rpc
arch/arm/def-configs/sherman [new file with mode: 0644]
arch/arm/def-configs/thinclient [deleted file]
arch/arm/kernel/bios32.c
arch/arm/kernel/dec21285.c
arch/arm/kernel/dma-arc.c
arch/arm/kernel/entry-armv.S
arch/arm/kernel/fiq.c
arch/arm/kernel/head-armo.S
arch/arm/kernel/head-armv.S
arch/arm/kernel/oldlatches.c
arch/arm/kernel/traps.c
arch/arm/kernel/via82c505.c
arch/arm/lib/Makefile
arch/arm/lib/ecard.S [new file with mode: 0644]
arch/arm/lib/io-acorn.S
arch/arm/lib/io-ebsa110.S [deleted file]
arch/arm/lib/io-footbridge.S [deleted file]
arch/arm/lib/io-pcio.S [new file with mode: 0644]
arch/arm/lib/io-readsb.S [new file with mode: 0644]
arch/arm/lib/io-readsl.S [new file with mode: 0644]
arch/arm/lib/io-readsw-armv3.S [new file with mode: 0644]
arch/arm/lib/io-readsw-armv4.S [new file with mode: 0644]
arch/arm/lib/io-writesb.S [new file with mode: 0644]
arch/arm/lib/io-writesl.S [new file with mode: 0644]
arch/arm/lib/io-writesw-armv3.S [new file with mode: 0644]
arch/arm/lib/io-writesw-armv4.S [new file with mode: 0644]
arch/arm/mach-footbridge/netwinder-hw.c
arch/arm/mm/fault-common.c
arch/arm/mm/init.c
arch/arm/mm/mm-armv.c
arch/arm/mm/proc-arm720.S
arch/arm/nwfpe/double_cpdo.c
arch/arm/nwfpe/extended_cpdo.c
arch/arm/nwfpe/fpa11_cpdo.c
arch/arm/nwfpe/fpa11_cpdt.c
arch/arm/nwfpe/fpa11_cprt.c
arch/arm/nwfpe/fpmodule.c
arch/arm/nwfpe/softfloat.c
arch/arm/tools/mach-types
arch/arm/vmlinux-armo.lds.in
arch/arm/vmlinux-armv.lds.in
arch/i386/boot/setup.S
arch/i386/kernel/pci-irq.c
arch/i386/kernel/process.c
arch/i386/kernel/setup.c
arch/m68k/amiga/config.c
arch/m68k/fpsp040/bindec.S
arch/m68k/fpsp040/decbin.S
arch/m68k/fpsp040/do_func.S
arch/m68k/fpsp040/get_op.S
arch/m68k/fpsp040/util.S
arch/m68k/fpsp040/x_store.S
arch/m68k/ifpsp060/os.S
arch/m68k/kernel/entry.S
arch/m68k/kernel/ints.c
arch/m68k/kernel/m68k_ksyms.c
arch/m68k/kernel/sys_m68k.c
arch/m68k/kernel/traps.c
arch/m68k/lib/Makefile
arch/m68k/lib/muldi3.c [new file with mode: 0644]
arch/m68k/mm/fault.c
arch/m68k/mvme147/config.c
arch/m68k/q40/README
arch/m68k/q40/config.c
arch/m68k/q40/q40ints.c
arch/ppc/amiga/config.c
drivers/block/z2ram.c
drivers/char/Makefile
drivers/char/amigamouse.c
drivers/char/serial167.c
drivers/char/vme_scc.c
drivers/isdn/avmb1/Makefile
drivers/isdn/avmb1/avm_cs.c
drivers/isdn/avmb1/b1.c
drivers/isdn/avmb1/b1dma.c
drivers/isdn/avmb1/b1isa.c
drivers/isdn/avmb1/b1pci.c
drivers/isdn/avmb1/b1pcmcia.c
drivers/isdn/avmb1/c4.c
drivers/isdn/avmb1/capi.c
drivers/isdn/avmb1/capidev.h
drivers/isdn/avmb1/capidrv.c
drivers/isdn/avmb1/capifs.c
drivers/isdn/avmb1/capiutil.c
drivers/isdn/avmb1/kcapi.c
drivers/isdn/avmb1/t1isa.c
drivers/isdn/avmb1/t1pci.c
drivers/isdn/divert/divert_procfs.c
drivers/isdn/hisax/amd7930.c
drivers/isdn/hisax/arcofi.c
drivers/isdn/hisax/asuscom.c
drivers/isdn/hisax/avm_a1.c
drivers/isdn/hisax/avm_a1p.c
drivers/isdn/hisax/avm_pci.c
drivers/isdn/hisax/bkm_a4t.c
drivers/isdn/hisax/bkm_a8.c
drivers/isdn/hisax/bkm_ax.h
drivers/isdn/hisax/callc.c
drivers/isdn/hisax/config.c
drivers/isdn/hisax/diva.c
drivers/isdn/hisax/elsa.c
drivers/isdn/hisax/elsa_ser.c
drivers/isdn/hisax/fsm.c
drivers/isdn/hisax/gazel.c
drivers/isdn/hisax/hfc_2bds0.c
drivers/isdn/hisax/hfc_2bs0.c
drivers/isdn/hisax/hfc_pci.c
drivers/isdn/hisax/hfc_sx.c
drivers/isdn/hisax/hfcscard.c
drivers/isdn/hisax/hisax.h
drivers/isdn/hisax/hscx.c
drivers/isdn/hisax/hscx_irq.c
drivers/isdn/hisax/icc.c
drivers/isdn/hisax/isac.c
drivers/isdn/hisax/isar.c
drivers/isdn/hisax/isdnl1.c
drivers/isdn/hisax/isdnl2.c
drivers/isdn/hisax/isdnl3.c
drivers/isdn/hisax/isurf.c
drivers/isdn/hisax/ix1_micro.c
drivers/isdn/hisax/jade.c
drivers/isdn/hisax/jade_irq.c
drivers/isdn/hisax/l3_1tr6.c
drivers/isdn/hisax/l3dss1.c
drivers/isdn/hisax/l3ni1.c
drivers/isdn/hisax/l3ni1.h
drivers/isdn/hisax/mic.c
drivers/isdn/hisax/netjet.c
drivers/isdn/hisax/netjet.h
drivers/isdn/hisax/niccy.c
drivers/isdn/hisax/nj_s.c
drivers/isdn/hisax/nj_u.c
drivers/isdn/hisax/s0box.c
drivers/isdn/hisax/saphir.c
drivers/isdn/hisax/sedlbauer.c
drivers/isdn/hisax/sportster.c
drivers/isdn/hisax/tei.c
drivers/isdn/hisax/teleint.c
drivers/isdn/hisax/teles0.c
drivers/isdn/hisax/teles3.c
drivers/isdn/hisax/telespci.c
drivers/isdn/hisax/w6692.c
drivers/isdn/hysdn/boardergo.c
drivers/isdn/hysdn/hycapi.c
drivers/isdn/hysdn/hysdn_defs.h
drivers/isdn/hysdn/hysdn_proclog.c
drivers/isdn/hysdn/hysdn_sched.c
drivers/isdn/isdn_cards.c
drivers/isdn/isdn_common.c
drivers/isdn/isdn_common.h
drivers/isdn/isdn_ppp.c
drivers/isdn/isdn_tty.c
drivers/net/apne.c
drivers/parport/parport_amiga.c
drivers/parport/parport_atari.c
drivers/parport/parport_mfc3.c
drivers/pci/pci.c
drivers/scsi/aha1542.c
drivers/scsi/wd33c93.c
drivers/video/Makefile
drivers/video/macmodes.c
fs/isofs/dir.c
fs/isofs/inode.c
fs/isofs/namei.c
fs/isofs/rock.c
fs/proc/generic.c
fs/proc/root.c
include/asm-arm/arch-arc/memory.h
include/asm-arm/arch-arc/processor.h [deleted file]
include/asm-arm/arch-cl7500/memory.h
include/asm-arm/arch-cl7500/processor.h [deleted file]
include/asm-arm/arch-ebsa285/hardware.h
include/asm-arm/arch-ebsa285/memory.h
include/asm-arm/arch-ebsa285/processor.h [deleted file]
include/asm-arm/arch-l7200/hardware.h
include/asm-arm/arch-l7200/memory.h
include/asm-arm/arch-l7200/processor.h [deleted file]
include/asm-arm/arch-nexuspci/memory.h
include/asm-arm/arch-nexuspci/processor.h [deleted file]
include/asm-arm/arch-rpc/memory.h
include/asm-arm/arch-rpc/processor.h [deleted file]
include/asm-arm/arch-rpc/uncompress.h
include/asm-arm/arch-shark/memory.h
include/asm-arm/arch-shark/processor.h [deleted file]
include/asm-arm/arch-tbox/memory.h
include/asm-arm/arch-tbox/processor.h [deleted file]
include/asm-arm/bitops.h
include/asm-arm/hardware.h
include/asm-arm/pci.h
include/asm-arm/proc-armo/processor.h
include/asm-arm/proc-armv/processor.h
include/asm-arm/proc-armv/ptrace.h
include/asm-arm/proc-armv/system.h
include/asm-arm/processor.h
include/asm-arm/system.h
include/asm-m68k/mman.h
include/asm-m68k/parport.h [new file with mode: 0644]
include/asm-m68k/processor.h
include/asm-m68k/q40_master.h
include/asm-m68k/q40ints.h
include/asm-m68k/siginfo.h
include/asm-m68k/unistd.h
include/linux/highmem.h
include/linux/isdn.h
include/linux/isdnif.h
include/linux/iso_fs.h
include/video/fbcon.h
init/main.c
ipc/shm.c
kernel/module.c
mm/highmem.c
mm/swap_state.c
mm/vmscan.c

index ee2e3e87350c1212ac0e46e5f64354f386354533..4fd971b88fc57416ccbe76c1978eaf56352b8a94 100644 (file)
@@ -16263,12 +16263,6 @@ CONFIG_SA1100_LART
   (also known as the LART).  See http://www.lart.tudelft.nl/ for
   information on the LART.
 
-Include support for ThinClient
-CONFIG_SA1100_THINCLIENT
-  Say Y here if you are using an Applied Data Systems Intel(R)
-  StrongARM(R) SA-1100 based Thin Client SBC.  See
-  http://www.flatpanels.com/ for information on this system.
-
 Include support for GraphicsClient
 CONFIG_SA1100_GRAPHICSCLIENT
   Say Y here if you are using an Applied Data Systems Intel(R)
@@ -16303,6 +16297,27 @@ Support ARM920
 CONFIG_CPU_ARM920
   Say Y here if you wish to include support for the ARM920 processor.
 
+Support ARM610 processor
+CONFIG_CPU_ARM6
+  Say Y here if you wish to include support for the ARM610 processor.
+
+Support ARM710 processor
+CONFIG_CPU_ARM7
+  Say Y here if you wish to include support for the ARM710 processor.
+
+Support StrongARM(R) SA-110 processor
+CONFIG_CPU_SA110
+  Say Y here if you wish to include support for the Intel(R)
+  StrongARM(R) SA-110 processor.
+
+Support ARM720 processor
+CONFIG_CPU_ARM720
+  Say Y here if you wish to include support for the ARM720 processor.
+
+Support ARM920
+CONFIG_CPU_ARM920
+  Say Y here if you wish to include support for the ARM920 processor.
+
 Math emulation
 CONFIG_NWFPE
   Say Y to include the NWFPE floating point emulator in the kernel.
@@ -16426,6 +16441,17 @@ CONFIG_SERIAL_21285_CONSOLE
   If you have enabled the serial port on the 21285 footbridge you can
   make it the console by answering Y to this option.
 
+SA1100 serial port support
+CONFIG_SERIAL_SA1100
+  If you have a machine based on a SA1100/SA1110 StrongARM CPU you can
+  enable its onboard serial port by enabling this option.
+  Please read Documentation/arm/SA1100/serial_UART for further info.
+
+Console on SA1100 serial port
+CONFIG_SERIAL_SA1100_CONSOLE
+  If you have enabled the serial port on the SA1100/SA1110 StrongARM
+  CPU you can make it the console by answering Y to this option.
+
 L7200 serial port support
 CONFIG_SERIAL_L7200
   If you have a LinkUp Systems L7200 board you can enable its two
index 96bdfe3e23386dc04fea89f674bc74d5232ce1c6..8514dac0368dff4a851da27210c6273cb64aee1f 100644 (file)
@@ -157,7 +157,8 @@ Kernel entry (head-armv.S)
   the mail a subject of 'Register new architecture':
 
     Name: <name of your architecture>
-    ARCHDIR: <name of include/asm-arm/arch-* directory>
+    ArchDir: <name of include/asm-arm/arch-* directory>
+    Type: <MACH_TYPE_* macro name>
     Description:
     <description of your architecture>
 
diff --git a/Documentation/arm/SA1100/GraphicsClient b/Documentation/arm/SA1100/GraphicsClient
new file mode 100644 (file)
index 0000000..01f3f05
--- /dev/null
@@ -0,0 +1,65 @@
+ADS GraphicsClient/ThinClient Single Board Computer
+
+For more details, contact Applied Data Systems or see
+http://www.flatpanels.com/products.html
+
+The original Linux support for this product has been provided by 
+Nicolas Pitre <nico@cam.org>.
+
+It's currently possible to mount a root filesystem via NFS providing a
+complete Linux environment.  Otherwise a ramdisk image may be used.  Use
+'make graphicsclient_config' before any 'make config'.  This will set up
+defaults for GraphicsClient/ThinClient support.
+
+The kernel zImage is linked to be loaded and executed at 0xc0200000.  
+Also the following registers should have the specified values upon entry:
+
+       r0 = 0
+       r1 = 29 (this is the GraphicsClient architecture number)
+
+Here is a tipical angel.opt option file if the kernel is loaded through
+the Angel Debug Monitor:
+
+----- begin angelboot.opt -----
+base 0xc0200000
+entry 0xc0200000
+r0 0x00000000
+r1 0x0000001d
+device /dev/ttyS1
+options "9600 8N1"
+baud 115200
+#otherfile ramdisk.gz
+#otherbase 0xc0800000
+exec minicom
+----- end angelboot.opt -----
+
+Then the kernel (and ramdisk if otherfile/otherbase lines above are
+uncommented) would be loaded with:
+
+       angelboot -f angelboot.opt zImage
+
+Here it is assumed that the board is connected to ttyS1 on your PC
+and that minicom is preconfigured with /dev/ttyS1, 9600 baud, 8N1, no flow
+control by default.
+
+If any other bootloader is used, ensure it accomplish the same, especially
+for r0/r1 register values before jumping into the kernel.
+
+
+Supported peripherals:
+- SA1100 LCD frame buffer (only 8bpp yet)
+- on-board SMC 92C94 ethernet NIC
+- SA1100 serial port
+- flash memory access
+- pcmcia
+- possibly UCB1200 audio (not tested yet)
+
+To do:
+- touchscreen driver
+- 16bpp frame buffer support
+- extra (external) serial port driver
+- some console keyboard support (maybe IR?)
+- everything else!  :-)
+
+Any contribution can be sent to nico@cam.org and will be greatly welcome!
+
diff --git a/Documentation/arm/SA1100/Pangolin b/Documentation/arm/SA1100/Pangolin
new file mode 100644 (file)
index 0000000..88cff5b
--- /dev/null
@@ -0,0 +1,25 @@
+Pangolin is a StrongARM 1110-based evaluation  platform produced
+by Dialogue Technoloy (http://www.dialogue.com.tw/).
+It has EISA slots for ease of configuration with SDRAM/Flash
+memory card, USB/Serial/Audio card, Compact Flash card,
+and TFT-LCD card.
+This platform is currently under development.
+
+To compile for Pangolin, you must issue the following commands:
+
+       make pangolin_config
+       make config
+       [accept all defaults]
+       make dep
+       make zImage
+
+Supported peripherals:
+- SA1110 serial port
+- flash memory access
+
+Testing:
+- pcmcia driver
+- sound driver
+
+To do:
+- MQ-200 driver
diff --git a/Documentation/arm/SA1100/ThinClient b/Documentation/arm/SA1100/ThinClient
deleted file mode 100644 (file)
index d5d7625..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-Thin Client / Single Board Computer
-
-The Thin Client, a low cost high power single board computer, has been
-designed to provide intuitive graphical displays in embedded systems.
-
-For more details, contact Applied Data Systems or see
-http://www.flatpanels.com/products.html
-
-Current Linux support for this product has been provided by Nicolas Pitre
-<nico@cam.org>.
-
-It's currently possible to mount a root filesystem via NFS providing a
-complete Linux environment.  Otherwise a ramdisk image may be used.  Use
-'make thinclient_config' before any 'make config'.  This will set up
-defaults for ThinClient support.
-
-The kernel zImage is linked to be loaded and executed at 0xc0200000.  
-Also the following registers should have the specified values upon entry:
-
-       r0 = 0
-       r1 = 24 (this is the ThinClient architecture number)
-
-Here is a tipical angel.opt option file if the kernel is loaded through
-the Angel Debug Monitor:
-
------ begin angelboot.opt -----
-base 0xc0200000
-entry 0xc0200000
-r0 0x00000000
-r1 0x00000018
-device /dev/ttyS1
-options "9600 8N1"
-baud 115200
-#otherfile ramdisk.gz
-#otherbase 0xc0800000
-exec minicom
------ end angelboot.opt -----
-
-Then the kernel (and ramdisk if otherfile/otherbase lines above are
-uncommented) would be loaded with:
-
-       angelboot -f angelboot.opt zImage
-
-Here it is assumed that the ThinClient is connected to ttyS1 on your PC
-and that minicom is preconfigured with /dev/ttyS1, 9600 baud, 8N1, no flow
-control by default.
-
-If any other bootloader is used, ensure it accomplish the same, especially
-for r0/r1 register values before jumping into the kernel.
-
-
-Supported peripherals:
-- SA1100 LCD frame buffer (only 8bpp yet)
-- on-board SMC 92C94 ethernet NIC
-- SA1100 serial port
-- flash memory access
-- possibly UCB1200 audio (not tested yet)
-
-To do:
-- touchscreen driver
-- 16bpp frame buffer support
-- extra (external) serial port driver
-- pcmcia
-- some console keyboard support (maybe IR?)
-- everything else!  :-)
-
-Any contribution can be sent to nico@cam.org and will be greatly welcome!
-
diff --git a/Documentation/arm/SA1100/serial_UART b/Documentation/arm/SA1100/serial_UART
new file mode 100644 (file)
index 0000000..3807dea
--- /dev/null
@@ -0,0 +1,65 @@
+The SA1100 serial port finally had its major/minor numbers officially 
+assigned:
+
+> Date: Sun, 24 Sep 2000 21:40:27 -0700
+> From: H. Peter Anvin <hpa@transmeta.com>
+> To: Nicolas Pitre <nico@CAM.ORG>
+> Cc: Device List Maintainer <device@lanana.org>
+> Subject: Re: device
+> 
+> Okay.  Note that device numbers 204 and 205 are used for "low density
+> serial devices", so you will have a range of minors on those majors (the
+> tty device layer handles this just fine, so you don't have to worry about
+> doing anything special.)
+> 
+> So your assignments are:
+> 
+> 204 char        Low-density serial ports
+>                   5 = /dev/ttySA0               SA1100 builtin serial port 0
+>                   6 = /dev/ttySA1               SA1100 builtin serial port 1
+>                   7 = /dev/ttySA2               SA1100 builtin serial port 2
+> 
+> 205 char        Low-density serial ports (alternate device)
+>                   5 = /dev/cusa0                Callout device for ttySA0
+>                   6 = /dev/cusa1                Callout device for ttySA1
+>                   7 = /dev/cusa2                Callout device for ttySA2
+>
+
+So, if you're not using devfs, you must create those inodes in /dev
+on the root filesystem used by your SA1100-based device:
+
+       mknod ttySA0 c 204 5
+       mknod ttySA1 c 204 6
+       mknod ttySA2 c 204 7
+       mknod cusa0 c 205 5
+       mknod cusa1 c 205 6
+       mknod cusa2 c 205 7
+
+Note that the old incorrect use of /dev/ttyS0 in order to use the serial port 
+won't work anymore.  This device node is reserved to the conventionnal 16x50
+UART which may appear on devices like PCMCIA modem, etc.
+
+In addition to the creation of the appropriate device nodes above, you must
+ensure your user space applications make use of the correct device name.
+The classic example is the content of the /etc/inittab where you might have 
+a getty process started on ttyS0.  In this case you have two choices:
+
+1- replace occurences of ttyS0 with ttySA0, ttyS1 with ttySA1, etc.
+
+2- in the occurence of 'ttyS0', you may consider replacing it with 'console'.
+   as in "T0:12345:respawn:/sbin/getty -L console 9600 vt100"
+
+(don't forget to add 'ttySA0', 'console', or the appropriate tty name 
+ in /etc/securetty for root to be allowed to login as well.)
+
+The use of /dev/console has the advantage of being independent of the real
+serial device used.  The kernel automatically forward all operations on
+/dev/console to the apropriate serial device.  The nature of the console may
+also be modified with a kernel command line parameter (see
+Documentation/serial-console.txt for the details).  Of course, 
+/dev/console must have been created as a char device with major 5 minor 1.
+
+Using /dev/console is also compatible with older kernels that used /dev/ttyS0.
+Therefore it is handy for ramdisk images which are targetted for different
+StrongARM platforms and older kernels.
+
index 4c164b8054ab74c4b231e444e15fdcf3d9277f9e..7e5731319e30d6b0b5361bff7c94c2952f5d2a97 100644 (file)
@@ -1,4 +1,4 @@
-$Id: INTERFACE.fax,v 1.1 1999/08/11 20:30:28 armin Exp $
+$Id: INTERFACE.fax,v 1.2 2000/08/06 09:22:50 armin Exp $
 
 
 Description of the fax-subinterface between linklevel and hardwarelevel of 
index 2dddf96ece82a788cc837855c63d2294edb9ba8c..3e0d6f5a6307028e9399538acd4866b1ebb4b0e0 100644 (file)
@@ -54,6 +54,7 @@ Sedlbauer ISDN-Controller PC/104
 USR Sportster internal TA (compatible Stollmann tina-pp V3)
 ith Kommunikationstechnik GmbH MIC 16 ISA card
 Traverse Technologie NETjet PCI S0 card and NETspider U card
+Ovislink ISDN sc100-p card (NETjet driver)
 Dr. Neuhaus Niccy PnP/PCI
 Siemens I-Surf 1.0
 Siemens I-Surf 2.0 (with IPAC, try type 12 asuscom) 
@@ -191,8 +192,9 @@ Card types:
    34  Gazel ISDN cards (PCI)   none
    35  HFC 2BDS0 PCI            none
    36  W6692 based PCI cards    none
-   37  HFC 2BDS0 S+, SP/PCMCIA  irq,io (pcmcia must be set with cardmgr)
+   37  HFC 2BDS0 S+, SP         irq,io
    38  NETspider U PCI card     none
+   39  HFC 2BDS0 SP/PCMCIA      irq,io (set with cardmgr)
 
 At the moment IRQ sharing is only possible with PCI cards. Please make sure
 that your IRQ is free and enabled for ISA use.
index e87bfc0cc0651c88340993fb693623964b7a22fa..de12c264b1f30940f3e449e9810a22e09e95d526 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 0
-EXTRAVERSION = -test11
+EXTRAVERSION = -test12
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
index 6fbdb5ea1634da63bf40ebbff33d6fe2f66ae412..f74033b3653f9fe16cf5c05b9053134d0871a1e6 100644 (file)
@@ -35,16 +35,21 @@ INITRD_PHYS  = 0x00800000
 INITRD_VIRT     = 0xc0800000
 endif
 
+ifeq ($(CONFIG_ARCH_SHARK),y)
+ZTEXTADDR       = 0x08508000
+ZRELADDR        = 0x08008000
+endif
+
 ifeq ($(CONFIG_FOOTBRIDGE),y)
 ZTEXTADDR       = 0x00008000
-PARAMS          = 0x00000100
+PARAMS_PHYS     = 0x00000100
 INITRD_PHYS     = 0x00800000
 INITRD_VIRT     = 0xc0800000
 endif
 
 ifeq ($(CONFIG_ARCH_INTEGRATOR),y)
 ZTEXTADDR       = 0x00008000
-PARAMS          = 0x00000100
+PARAMS_PHYS     = 0x00000100
 INITRD_PHYS     = 0x00800000
 INITRD_VIRT     = 0xc0800000
 endif
@@ -65,6 +70,14 @@ ZRELADDR      = 0xf0008000
 ZBSSADDR        = 0xf03e0000
 endif
 
+ifeq ($(CONFIG_ARCH_P720T),y)
+ZTEXTADDR       = 0xc0018000
+ZRELADDR        = 0xc0018000
+PARAMS_PHYS     = 0xc0000100
+INITRD_PHYS     = 0xc0400000
+INITRD_VIRT     = 0xc0400000
+endif
+
 ifeq ($(CONFIG_ARCH_SA1100),y)
 ZTEXTADDR       = 0xc0008000
 ZRELADDR        = 0xc0008000
@@ -72,8 +85,9 @@ ifeq ($(CONFIG_SA1100_VICTOR),y)
   ZTEXTADDR     = 0x00002000
   ZBSSADDR      = 0xc0100000
 endif
-ifeq ($(CONFIG_SA1100_THINCLIENT),y)
-  ZTEXTADDR     = 0xC0200000
+ifeq ($(CONFIG_SA1100_SHERMAN),y)
+  ZTEXTADDR      = 0x00050000   
+  ZBSSADDR       = 0xc0100000
 endif
 ifeq ($(CONFIG_SA1100_GRAPHICSCLIENT),y)
   ZTEXTADDR     = 0xC0200000
index 46b754ec5cb783698d9e6c9a0a73cfbe537172e6..bf8f1c9477dfe35f57f48a853d1878f7b46d6a89 100644 (file)
@@ -18,6 +18,7 @@ ZLDFLAGS       = -p -X -T vmlinux.lds
 #
 ifeq ($(CONFIG_ARCH_ACORN),y)
 OBJS           += ll_char_wr.o font.o
+ZLDFLAGS       += -defsym params=$(PARAMS_PHYS)
 endif
 
 ifeq ($(CONFIG_ARCH_NETWINDER),y)
@@ -36,6 +37,11 @@ ifeq ($(CONFIG_ARCH_L7200),y)
 OBJS           += head-l7200.o
 endif
 
+ifeq ($(CONFIG_ARCH_P720T),y)
+# Borrow this code from SA1100
+OBJS           += head-sa1100.o
+endif
+
 ifeq ($(CONFIG_ARCH_SA1100),y)
 OBJS           += head-sa1100.o setup-sa1100.o
 ifeq ($(CONFIG_SA1100_NANOENGINE),y)
index 11a1dfd67fd16db6c4ccfec174c5e0038670f709..c8ede2f80fab7c2d1825f08846ec447feda0efd1 100644 (file)
@@ -2,36 +2,72 @@
 # Automatically generated make config: don't edit
 #
 CONFIG_ARM=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
+CONFIG_OBSOLETE=y
 
 #
-# System and processor type
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+CONFIG_ARCH_ARCA5K=y
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Archimedes/A5000 Implementations (select only ONE)
 #
 # CONFIG_ARCH_ARC is not set
 CONFIG_ARCH_A5K=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_FOOTBRIDGE is not set
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
 CONFIG_ARCH_ACORN=y
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
 # CONFIG_CPU_32 is not set
 CONFIG_CPU_26=y
 # CONFIG_PAGESIZE_16 is not set
-# CONFIG_ISA_DMA is not set
 
 #
-# Loadable module support
+# Processor Type
 #
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
+# CONFIG_DISCONTIGMEM is not set
 
 #
 # General setup
 #
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
 # CONFIG_BSD_PROCESS_ACCT is not set
@@ -42,9 +78,15 @@ CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_AOUT=y
 # CONFIG_BINFMT_ELF is not set
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+
+#
+# Parallel port support
+#
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 # CONFIG_PARPORT_PC_FIFO is not set
+CONFIG_PARPORT_PC_SUPERIO=y
 # CONFIG_PARPORT_ARC is not set
 # CONFIG_PARPORT_AMIGA is not set
 # CONFIG_PARPORT_MFC3 is not set
@@ -54,14 +96,9 @@ CONFIG_PARPORT_PC=m
 # CONFIG_PARPORT_1284 is not set
 
 #
-# I2O device support
+# Memory Technology Devices (MTD)
 #
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
+# CONFIG_MTD is not set
 
 #
 # Plug and Play configuration
@@ -73,37 +110,16 @@ CONFIG_PARPORT_PC=m
 # Block devices
 #
 CONFIG_BLK_DEV_FD=y
-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_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-CONFIG_BLK_DEV_IDE_ICSIDE=y
-# CONFIG_BLK_DEV_IDEDMA_ICS is not set
-# CONFIG_BLK_DEV_IDE_RAPIDE is not set
-# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
 CONFIG_BLK_DEV_LOOP=m
 # CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
 CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=m
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
 
 #
 # Acorn-specific block devices
@@ -112,100 +128,6 @@ CONFIG_PARIDE_PARPORT=m
 CONFIG_BLK_DEV_MFM=m
 CONFIG_BLK_DEV_MFM_AUTODETECT=y
 
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_ATOMWIDE_SERIAL is not set
-# CONFIG_DUALSP_SERIAL is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_UNIX98_PTYS is not set
-# CONFIG_PRINTER is not set
-# CONFIG_PPDEV is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-# CONFIG_PSMOUSE is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
-
-#
-# PCMCIA character device support
-#
-# CONFIG_PCMCIA_SERIAL_CS is not set
-# CONFIG_AGP is not set
-
-#
-# Support for USB
-#
-# CONFIG_USB is not set
-
-#
-# Console drivers
-#
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_ACORN=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_MFB=y
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-CONFIG_FONT_ACORN_8x8=y
-
 #
 # Networking options
 #
@@ -218,16 +140,10 @@ CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
 # CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
+# CONFIG_INET_ECN is not set
 # CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-# CONFIG_SKB_LARGE is not set
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
@@ -238,9 +154,9 @@ CONFIG_INET=y
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
 # CONFIG_LLC is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
@@ -252,16 +168,6 @@ CONFIG_INET=y
 #
 # CONFIG_NET_SCHED is not set
 
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
 #
 # Network device support
 #
@@ -272,7 +178,9 @@ CONFIG_NETDEVICES=y
 #
 # CONFIG_ARCNET is not set
 # CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
 # CONFIG_NET_SB1000 is not set
 
 #
@@ -286,19 +194,18 @@ CONFIG_ARM_ETHER3=y
 # CONFIG_LANCE is not set
 # CONFIG_NET_VENDOR_SMC is not set
 # CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_DM9102 is not set
 # CONFIG_AT1700 is not set
 # CONFIG_DEPCA is not set
 # CONFIG_NET_ISA is not set
-# CONFIG_NET_EISA is not set
+# CONFIG_NET_PCI is not set
 # CONFIG_NET_POCKET is not set
 
 #
 # Ethernet (1000 Mbit)
 #
-# CONFIG_YELLOWFIN is not set
 # CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
@@ -312,7 +219,7 @@ CONFIG_ARM_ETHER3=y
 # CONFIG_NET_RADIO is not set
 
 #
-# Token Ring driver support
+# Token Ring devices
 #
 # CONFIG_TR is not set
 # CONFIG_NET_FC is not set
@@ -325,9 +232,62 @@ CONFIG_ARM_ETHER3=y
 # CONFIG_WAN is not set
 
 #
-# PCMCIA network device support
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
 #
-# CONFIG_NET_PCMCIA is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+CONFIG_BLK_DEV_IDE_ICSIDE=y
+# CONFIG_BLK_DEV_IDEDMA_ICS is not set
+# CONFIG_IDEDMA_ICS_AUTO is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_BLK_DEV_IDE_RAPIDE is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
 
 #
 # SCSI support
@@ -335,16 +295,90 @@ CONFIG_ARM_ETHER3=y
 # CONFIG_SCSI is not set
 
 #
-# Sound
+# I2O device support
 #
-# CONFIG_SOUND is not set
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_ATOMWIDE_SERIAL is not set
+# CONFIG_DUALSP_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_PHILIPSPAR is not set
+# CONFIG_I2C_ELV is not set
+# CONFIG_I2C_VELLEMAN is not set
+# CONFIG_I2C_ALGOPCF is not set
+CONFIG_I2C_CHARDEV=y
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+# CONFIG_PSMOUSE is not set
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
 
 #
-# Filesystems
+# File systems
 #
 # CONFIG_QUOTA is not set
 # CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
 CONFIG_ADFS_FS=y
+# CONFIG_ADFS_FS_RW is not set
 # CONFIG_AFFS_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_BFS_FS is not set
@@ -353,37 +387,60 @@ CONFIG_MSDOS_FS=m
 # CONFIG_UMSDOS_FS is not set
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_RAMFS is not set
 # CONFIG_ISO9660_FS is not set
 # CONFIG_JOLIET is not set
 # CONFIG_MINIX_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 is not set
 # CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_EXT2_FS=y
 # CONFIG_SYSV_FS is not set
+# CONFIG_SYSV_FS_WRITE is not set
 # CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
 # CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
 
 #
 # Network File Systems
 #
 # CONFIG_CODA_FS is not set
 CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
 # CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
 CONFIG_SUNRPC=y
 CONFIG_LOCKD=y
 # CONFIG_SMB_FS is not set
 # CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_MOUNT_SUBDIR is not set
+# CONFIG_NCPFS_NDS_DOMAINS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
 
 #
 # Partition Types
 #
 # CONFIG_PARTITION_ADVANCED is not set
 CONFIG_MSDOS_PARTITION=y
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
 CONFIG_ACORN_PARTITION=y
 CONFIG_ACORN_PARTITION_ADFS=y
 CONFIG_ACORN_PARTITION_ICS=y
@@ -394,6 +451,7 @@ CONFIG_NLS=y
 #
 # Native Language Support
 #
+CONFIG_NLS_DEFAULT="iso8859-1"
 # CONFIG_NLS_CODEPAGE_437 is not set
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
@@ -410,6 +468,10 @@ CONFIG_NLS=y
 # CONFIG_NLS_CODEPAGE_866 is not set
 # CONFIG_NLS_CODEPAGE_869 is not set
 # CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
 # CONFIG_NLS_ISO8859_1 is not set
 # CONFIG_NLS_ISO8859_2 is not set
 # CONFIG_NLS_ISO8859_3 is not set
@@ -422,6 +484,45 @@ CONFIG_NLS=y
 # CONFIG_NLS_ISO8859_14 is not set
 # CONFIG_NLS_ISO8859_15 is not set
 # CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_ACORN=y
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_MFB=y
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+CONFIG_FONT_ACORN_8x8=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
 
 #
 # Kernel hacking
index 7a4cd1778efc71f4d3a8f16e8276a14d2ab1705a..8cf335a9f9049be721428a6bd5191607263c2c24 100644 (file)
@@ -11,58 +11,76 @@ CONFIG_UID16=y
 CONFIG_EXPERIMENTAL=y
 # CONFIG_OBSOLETE is not set
 
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
 #
 # System Type
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_RPC is not set
 CONFIG_ARCH_SA1100=y
 
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
 #
 # SA11x0 Implementations
 #
 CONFIG_SA1100_ASSABET=y
 # CONFIG_ASSABET_NEPONSET is not set
 # CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
 # CONFIG_SA1100_BITSY is not set
 # CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_THINCLIENT is not set
 # CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_NANOENGINE is not set
 # CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_SA1100_PANGOLIN is not set
 CONFIG_ANGELBOOT=y
-# CONFIG_SA1100_FREQUENCY_SCALE is not set
+CONFIG_SA1100_FREQUENCY_SCALE=y
 # CONFIG_SA1100_VOLTAGE_SCALE is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA1100=y
 # CONFIG_ARCH_ACORN is not set
 # CONFIG_FOOTBRIDGE is not set
 # CONFIG_FOOTBRIDGE_HOST is not set
 # CONFIG_FOOTBRIDGE_ADDIN is not set
-CONFIG_DISCONTIGMEM=y
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
 
 #
-# Loadable module support
+# Processor Type
 #
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
 
 #
 # General setup
 #
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_PC_KEYMAP=y
 CONFIG_HOTPLUG=y
 
 #
-# PC Card support
+# PCMCIA/CardBus support
 #
 CONFIG_PCMCIA=y
 # CONFIG_PCMCIA_DEBUG is not set
@@ -135,16 +153,10 @@ CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
 # CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
+# CONFIG_INET_ECN is not set
 # CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
@@ -181,13 +193,13 @@ CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
 # CONFIG_NET_SB1000 is not set
 
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 # CONFIG_NET_VENDOR_3COM is not set
 # CONFIG_LANCE is not set
 # CONFIG_NET_VENDOR_SMC is not set
@@ -320,13 +332,14 @@ CONFIG_BLK_DEV_IDECS=y
 #
 CONFIG_VT=y
 # CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_TOUCHSCREEN_SA1100 is not set
-# CONFIG_TOUCHSCREEN_BITSY is not set
 # CONFIG_SERIAL is not set
 # CONFIG_SERIAL_EXTENDED is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=9600
+CONFIG_TOUCHSCREEN_UCB1200=y
+# CONFIG_TOUCHSCREEN_BITSY is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_UNIX98_PTY_COUNT=32
 
@@ -345,6 +358,10 @@ CONFIG_UNIX98_PTY_COUNT=32
 # Joysticks
 #
 # CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -354,11 +371,6 @@ CONFIG_UNIX98_PTY_COUNT=32
 # CONFIG_INTEL_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
@@ -367,10 +379,9 @@ CONFIG_UNIX98_PTY_COUNT=32
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
 # CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
 # CONFIG_PCMCIA_SERIAL is not set
-# CONFIG_AGP is not set
 
 #
 # File systems
@@ -451,12 +462,14 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_SOLARIS_X86_PARTITION is not set
 # CONFIG_UNIXWARE_DISKLABEL is not set
 # CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
 CONFIG_NLS=y
 
 #
 # Native Language Support
 #
+CONFIG_NLS_DEFAULT="iso8859-1"
 CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
@@ -473,6 +486,10 @@ CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_CODEPAGE_866 is not set
 # CONFIG_NLS_CODEPAGE_869 is not set
 # CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
 # CONFIG_NLS_ISO8859_1 is not set
 # CONFIG_NLS_ISO8859_2 is not set
 # CONFIG_NLS_ISO8859_3 is not set
@@ -485,6 +502,7 @@ CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_ISO8859_14 is not set
 # CONFIG_NLS_ISO8859_15 is not set
 # CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_UTF8 is not set
 
 #
 # Console drivers
@@ -497,7 +515,9 @@ CONFIG_FB=y
 #
 CONFIG_FB=y
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_CYBER2000 is not set
 CONFIG_FB_SA1100=y
+# CONFIG_FB_MQ200 is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB2=y
@@ -517,8 +537,10 @@ CONFIG_FONT_8x8=y
 #
 CONFIG_SOUND=y
 CONFIG_SOUND_UDA1341=y
+# CONFIG_SOUND_SA1100_SSP is not set
 # CONFIG_SOUND_CMPCI is not set
 # CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
 # CONFIG_SOUND_ES1370 is not set
 # CONFIG_SOUND_ES1371 is not set
 # CONFIG_SOUND_ESSSOLO1 is not set
index 34391812a0696386ed493ee58628d4fa1e375740..bdd14f5525c86b7f1f66b436d43b10871f2469b1 100644 (file)
@@ -11,11 +11,18 @@ CONFIG_UID16=y
 CONFIG_EXPERIMENTAL=y
 # CONFIG_OBSOLETE is not set
 
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
 #
 # System Type
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
@@ -27,33 +34,30 @@ CONFIG_ARCH_SA1100=y
 #
 # CONFIG_SA1100_ASSABET is not set
 CONFIG_SA1100_BRUTUS=y
+# CONFIG_SA1100_CERF is not set
 # CONFIG_SA1100_BITSY is not set
 # CONFIG_SA1100_LART is not set
 # CONFIG_SA1100_THINCLIENT is not set
 # CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_NANOENGINE is not set
 # CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
 CONFIG_ANGELBOOT=y
 # CONFIG_SA1100_FREQUENCY_SCALE is not set
 # CONFIG_SA1100_VOLTAGE_SCALE is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA1100=y
 # CONFIG_ARCH_ACORN is not set
 # CONFIG_FOOTBRIDGE is not set
 # CONFIG_FOOTBRIDGE_HOST is not set
 # CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
 CONFIG_DISCONTIGMEM=y
 # CONFIG_PCI is not set
 # CONFIG_ISA is not set
 # CONFIG_ISA_DMA is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
+CONFIG_PC_KEYMAP=y
 
 #
 # General setup
@@ -147,7 +151,7 @@ CONFIG_VT=y
 # CONFIG_VT_CONSOLE is not set
 CONFIG_SERIAL_SA1100=y
 CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_TOUCHSCREEN_SA1100 is not set
+# CONFIG_TOUCHSCREEN_UCB1200 is not set
 # CONFIG_TOUCHSCREEN_BITSY is not set
 # CONFIG_SERIAL is not set
 # CONFIG_SERIAL_EXTENDED is not set
@@ -192,9 +196,8 @@ CONFIG_UNIX98_PTY_COUNT=32
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
 # CONFIG_AGP is not set
+# CONFIG_DRM is not set
 
 #
 # File systems
@@ -256,6 +259,7 @@ CONFIG_FB=y
 #
 CONFIG_FB=y
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_CYBER2000 is not set
 CONFIG_FB_SA1100=y
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
index accb50b3fa08fe4697006c6b6c80677758aa973a..e2bf1e06a90d012e325c6cf8ffad69d998975852 100644 (file)
@@ -21,8 +21,8 @@ CONFIG_MODULES=y
 #
 # System Type
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
@@ -35,34 +35,39 @@ CONFIG_ARCH_SA1100=y
 # CONFIG_SA1100_ASSABET is not set
 # CONFIG_SA1100_BRUTUS is not set
 CONFIG_SA1100_CERF=y
+CONFIG_SA1100_CERF_32MB=y
 # CONFIG_SA1100_BITSY is not set
 # CONFIG_SA1100_LART is not set
 # CONFIG_SA1100_THINCLIENT is not set
 # CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_NANOENGINE is not set
 # CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_XP860 is not set
 # CONFIG_ANGELBOOT is not set
 # CONFIG_SA1100_FREQUENCY_SCALE is not set
 # CONFIG_SA1100_VOLTAGE_SCALE is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA1100=y
 # CONFIG_ARCH_ACORN is not set
 # CONFIG_FOOTBRIDGE is not set
 # CONFIG_FOOTBRIDGE_HOST is not set
 # CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
 CONFIG_DISCONTIGMEM=y
 # CONFIG_PCI is not set
 # CONFIG_ISA is not set
 # CONFIG_ISA_DMA is not set
+CONFIG_PC_KEYMAP=y
 
 #
 # General setup
 #
+# CONFIG_SA1100_CERF_CMDLINE is not set
 CONFIG_HOTPLUG=y
 
 #
-# PC Card support
+# PCMCIA/CardBus support
 #
 CONFIG_PCMCIA=y
 # CONFIG_PCMCIA_DEBUG is not set
@@ -70,7 +75,7 @@ CONFIG_SA1100_PCMCIA=y
 CONFIG_VIRTUAL_BUS=y
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_SYSCTL=y
 CONFIG_NWFPE=y
 CONFIG_KCORE_ELF=y
@@ -80,7 +85,7 @@ CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
 # CONFIG_PM is not set
 # CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="keepinitrd"
+CONFIG_CMDLINE="console=ttyS0,38400"
 CONFIG_LEDS=y
 CONFIG_LEDS_TIMER=y
 CONFIG_LEDS_CPU=y
@@ -126,7 +131,9 @@ CONFIG_UNIX=y
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
 # CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
@@ -282,10 +289,11 @@ CONFIG_BLK_DEV_IDECS=y
 #
 # Character devices
 #
-# CONFIG_VT is not set
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
 CONFIG_SERIAL_SA1100=y
 CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_TOUCHSCREEN_UCB1200 is not set
+CONFIG_TOUCHSCREEN_UCB1200=y
 # CONFIG_TOUCHSCREEN_BITSY is not set
 # CONFIG_SERIAL is not set
 # CONFIG_SERIAL_EXTENDED is not set
@@ -329,9 +337,9 @@ CONFIG_UNIX98_PTY_COUNT=32
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
 # CONFIG_DRM is not set
 # CONFIG_PCMCIA_SERIAL is not set
-# CONFIG_AGP is not set
 
 #
 # File systems
@@ -345,6 +353,7 @@ CONFIG_UNIX98_PTY_COUNT=32
 # CONFIG_BFS_FS is not set
 # CONFIG_FAT_FS is not set
 # CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS_VERBOSE=0
 # CONFIG_CRAMFS is not set
 # CONFIG_RAMFS is not set
 # CONFIG_ISO9660_FS is not set
@@ -367,6 +376,7 @@ CONFIG_EXT2_FS=y
 # CONFIG_CODA_FS is not set
 CONFIG_NFS_FS=y
 # CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
 # CONFIG_NFSD is not set
 CONFIG_SUNRPC=y
 CONFIG_LOCKD=y
@@ -376,36 +386,37 @@ CONFIG_LOCKD=y
 #
 # Partition Types
 #
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
+# CONFIG_PARTITION_ADVANCED is not set
 CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
 # CONFIG_NLS is not set
 
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_SA1100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+# CONFIG_FBCON_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
 #
 # Sound
 #
-CONFIG_SOUND=y
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND is not set
 
 #
 # USB support
index c2c7e0dcc7176696b075e7f587c4cd4346493f5d..8f7981934bc6ba9b49ee3c18991574cddc2ce361 100644 (file)
@@ -1,53 +1,79 @@
 #
-# Automatically generated by make menuconfig: don't edit
+# Automatically generated make config: don't edit
 #
 CONFIG_ARM=y
+# CONFIG_EISA is not set
 # CONFIG_SBUS is not set
+# CONFIG_MCA is not set
 CONFIG_UID16=y
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
 
 #
 # System Type
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
 # CONFIG_ARCH_CO285 is not set
 CONFIG_ARCH_EBSA110=y
 # CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA110=y
+# CONFIG_ARCH_CLPS711X is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+
+#
+# CLPS711X/EP721X Implementations
+#
 # CONFIG_ARCH_ACORN is not set
 # CONFIG_FOOTBRIDGE is not set
 # CONFIG_FOOTBRIDGE_HOST is not set
 # CONFIG_FOOTBRIDGE_ADDIN is not set
-# CONFIG_DISCONTIGMEM is not set
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
 
 #
-# Loadable module support
+# Processor Type
 #
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA110=y
+# CONFIG_DISCONTIGMEM is not set
 
 #
 # General setup
 #
+# CONFIG_ANGELBOOT is not set
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_SYSCTL=y
 # CONFIG_NWFPE is not set
 CONFIG_KCORE_ELF=y
@@ -55,6 +81,7 @@ CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
 # CONFIG_ARTHUR is not set
 CONFIG_CMDLINE="root=/dev/nfs rw mem=16M console=ttyS1,38400n8"
 CONFIG_LEDS=y
@@ -66,7 +93,7 @@ CONFIG_LEDS_TIMER=y
 CONFIG_PARPORT=y
 CONFIG_PARPORT_PC=y
 CONFIG_PARPORT_PC_FIFO=y
-CONFIG_PARPORT_PC_SUPERIO=y
+# CONFIG_PARPORT_PC_SUPERIO is not set
 # CONFIG_PARPORT_ARC is not set
 # CONFIG_PARPORT_AMIGA is not set
 # CONFIG_PARPORT_MFC3 is not set
@@ -75,6 +102,11 @@ CONFIG_PARPORT_PC_SUPERIO=y
 # CONFIG_PARPORT_OTHER is not set
 CONFIG_PARPORT_1284=y
 
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
 #
 # Plug and Play configuration
 #
@@ -88,15 +120,12 @@ CONFIG_PARPORT_1284=y
 # CONFIG_BLK_DEV_XD is not set
 # CONFIG_PARIDE is not set
 # CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
 # CONFIG_BLK_DEV_LOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_LVM is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_RAID15_DANGEROUS is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
 # CONFIG_BLK_DEV_INITRD is not set
 
 #
@@ -126,14 +155,12 @@ CONFIG_IP_ROUTE_VERBOSE=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_BOOTP=y
 # CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
 # CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
 # CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
 CONFIG_SYN_COOKIES=y
-# CONFIG_SKB_LARGE is not set
 
 #
 #   IP: Netfilter Configuration
@@ -164,9 +191,25 @@ CONFIG_IP_NF_TARGET_LOG=m
 CONFIG_IP_NF_COMPAT_IPCHAINS=m
 CONFIG_IP_NF_NAT_NEEDED=y
 # CONFIG_IP_NF_COMPAT_IPFWADM is not set
-# CONFIG_IPV6 is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_EUI64=y
+# CONFIG_IPV6_NO_PB is not set
+
+#
+#   IPv6: Netfilter Configuration
+#
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_LIMIT=m
+CONFIG_IP6_NF_MATCH_MARK=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_MARK=m
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
+
+#
+#  
+#
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_DECNET is not set
@@ -174,6 +217,7 @@ CONFIG_IP_NF_NAT_NEEDED=y
 # 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
@@ -196,6 +240,7 @@ CONFIG_NETDEVICES=y
 # 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
 # CONFIG_NET_SB1000 is not set
 
@@ -217,8 +262,9 @@ CONFIG_ARM_AM79C961A=y
 #
 # Ethernet (1000 Mbit)
 #
-# CONFIG_YELLOWFIN is not set
 # CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
@@ -286,6 +332,11 @@ CONFIG_PPP_BSDCOMP=m
 #
 # CONFIG_ISDN is not set
 
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
 #
 # Character devices
 #
@@ -299,7 +350,8 @@ CONFIG_SERIAL_EXTENDED=y
 # CONFIG_SERIAL_MULTIPORT is not set
 # CONFIG_HUB6 is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_UNIX98_PTYS is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
 CONFIG_PRINTER=m
 # CONFIG_LP_CONSOLE is not set
 # CONFIG_PPDEV is not set
@@ -319,6 +371,10 @@ CONFIG_PRINTER=m
 # Joysticks
 #
 # CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
 # CONFIG_QIC02_TAPE is not set
 
 #
@@ -326,19 +382,17 @@ CONFIG_PRINTER=m
 #
 CONFIG_WATCHDOG=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_SOFT_WATCHDOG=y
 # CONFIG_WDT is not set
 # CONFIG_WDTPCI is not set
-CONFIG_SOFT_WATCHDOG=y
 # CONFIG_PCWATCHDOG is not set
 # CONFIG_ACQUIRE_WDT is not set
+# CONFIG_60XX_WDT is not set
 # CONFIG_MIXCOMWD is not set
+# CONFIG_I810_TCO is not set
+# CONFIG_INTEL_RNG is not set
 # CONFIG_NVRAM is not set
 # CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
@@ -347,9 +401,13 @@ CONFIG_SOFT_WATCHDOG=y
 # Ftape, the floppy tape device driver
 #
 # CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
 # CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
 
 #
 # File systems
@@ -367,6 +425,7 @@ CONFIG_AUTOFS4_FS=y
 # CONFIG_UMSDOS_FS is not set
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_RAMFS is not set
 # CONFIG_ISO9660_FS is not set
@@ -400,7 +459,6 @@ CONFIG_NFS_FS=y
 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
@@ -427,6 +485,7 @@ CONFIG_PARTITION_ADVANCED=y
 # CONFIG_MAC_PARTITION is not set
 # CONFIG_MSDOS_PARTITION is not set
 # CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
 # CONFIG_NLS is not set
 
@@ -438,7 +497,7 @@ CONFIG_PARTITION_ADVANCED=y
 #
 # Kernel hacking
 #
-# CONFIG_FRAME_POINTER is not set
+CONFIG_FRAME_POINTER=y
 CONFIG_DEBUG_ERRORS=y
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_INFO is not set
index af2ccd01aa7399ca5fc00e646a96fb061cf7bd46..255c9994560447eb0242eb6d10f48fccdd08ffbe 100644 (file)
@@ -2,54 +2,82 @@
 # Automatically generated make config: don't edit
 #
 CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
 CONFIG_UID16=y
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
 
 #
-# System and Processor Type
+# Loadable module support
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-# CONFIG_ARCH_RPC is not set
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
-CONFIG_FOOTBRIDGE=y
-CONFIG_HOST_FOOTBRIDGE=y
-# CONFIG_ADDIN_FOOTBRIDGE is not set
+CONFIG_ARCH_FOOTBRIDGE=y
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_CLPS711X is not set
+
+#
+# Archimedes/A5000 Implementations
+#
 
 #
 # Footbridge Implementations
 #
-CONFIG_ARCH_EBSA285=y
 # CONFIG_ARCH_CATS is not set
-CONFIG_ARCH_NETWINDER=y
 # CONFIG_ARCH_PERSONAL_SERVER is not set
+# CONFIG_ARCH_EBSA285_ADDIN is not set
+CONFIG_ARCH_EBSA285_HOST=y
+CONFIG_ARCH_NETWINDER=y
+
+#
+# SA11x0 Implementations
+#
+
+#
+# CLPS711X/EP721X Implementations
+#
 # CONFIG_ARCH_ACORN is not set
+CONFIG_FOOTBRIDGE=y
+CONFIG_FOOTBRIDGE_HOST=y
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_ARCH_EBSA285=y
 CONFIG_CPU_32=y
 # CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA110=y
-CONFIG_PCI=y
-CONFIG_PCI_NAMES=y
-CONFIG_ISA=y
-CONFIG_ISA_DMA=y
-# CONFIG_SBUS is not set
-# CONFIG_PCMCIA is not set
-CONFIG_ALIGNMENT_TRAP=y
 
 #
-# Loadable module support
+# Processor Type
 #
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA110=y
+# CONFIG_DISCONTIGMEM is not set
 
 #
 # General setup
 #
+# CONFIG_ANGELBOOT is not set
+CONFIG_PCI=y
+CONFIG_ISA=y
+CONFIG_ISA_DMA=y
+CONFIG_PCI_NAMES=y
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
 CONFIG_BSD_PROCESS_ACCT=y
@@ -60,7 +88,12 @@ CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
 # CONFIG_ARTHUR is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+# CONFIG_LEDS_CPU is not set
+CONFIG_ALIGNMENT_TRAP=y
 
 #
 # Parallel port support
@@ -76,25 +109,11 @@ CONFIG_PARPORT_PC_FIFO=y
 # CONFIG_PARPORT_SUNBPP is not set
 # CONFIG_PARPORT_OTHER is not set
 CONFIG_PARPORT_1284=y
-CONFIG_CMDLINE="root=/dev/hda1 ro mem=32M parport=0x378,7 ide0=autotune"
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-# CONFIG_LEDS_CPU is not set
 
 #
-# IEEE 1394 (FireWire) support
+# Memory Technology Devices (MTD)
 #
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
+# CONFIG_MTD is not set
 
 #
 # Plug and Play configuration
@@ -137,185 +156,13 @@ CONFIG_PARIDE_KTTI=m
 CONFIG_PARIDE_ON20=m
 CONFIG_PARIDE_ON26=m
 # CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
 CONFIG_BLK_DEV_LOOP=m
 CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_LVM is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_RAID15_DANGEROUS is not set
 CONFIG_BLK_DEV_RAM=y
-# CONFIG_BLK_DEV_INITRD is not set
-
-#
-# 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=y
-# CONFIG_COMPUTONE is not set
-# CONFIG_ROCKETPORT is not set
-# CONFIG_CYCLADES is not set
-CONFIG_SERIAL_21285=y
-CONFIG_SERIAL_21285_CONSOLE=y
-# CONFIG_DIGIEPCA is not set
-# CONFIG_DIGI is not set
-# CONFIG_ESPSERIAL is not set
-# CONFIG_MOXA_INTELLIO is not set
-# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_ISI is not set
-# CONFIG_SYNCLINK is not set
-# CONFIG_N_HDLC is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_SX is not set
-# CONFIG_STALDRV is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-# CONFIG_WDT is not set
-# CONFIG_WDTPCI is not set
-CONFIG_SOFT_WATCHDOG=y
-# CONFIG_PCWATCHDOG is not set
-# CONFIG_ACQUIRE_WDT is not set
-# CONFIG_MIXCOMWD is not set
-CONFIG_21285_WATCHDOG=m
-CONFIG_977_WATCHDOG=m
-CONFIG_DS1620=y
-CONFIG_NWBUTTON=y
-CONFIG_NWBUTTON_REBOOT=y
-CONFIG_NWFLASH=m
-CONFIG_NVRAM=m
-CONFIG_RTC=y
-
-#
-# Video For Linux
-#
-CONFIG_VIDEO_DEV=y
-# CONFIG_I2C_PARPORT is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_BWQCAM is not set
-# CONFIG_VIDEO_CQCAM is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_ZORAN is not set
-# CONFIG_VIDEO_BUZ is not set
-# CONFIG_VIDEO_ZR36120 is not set
-CONFIG_VIDEO_CYBERPRO=m
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
-# CONFIG_AGP is not set
-
-#
-# Console drivers
-#
-CONFIG_VGA_CONSOLE=y
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_CLGEN is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_CYBER2000=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-# CONFIG_FBCON_MFB is not set
-# CONFIG_FBCON_CFB2 is not set
-# CONFIG_FBCON_CFB4 is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-# CONFIG_FBCON_CFB32 is not set
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-CONFIG_FBCON_VGA=y
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-CONFIG_FONT_ACORN_8x8=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
 
 #
 # Networking options
@@ -327,24 +174,21 @@ CONFIG_PACKET_MMAP=y
 # CONFIG_FILTER is not set
 CONFIG_UNIX=y
 CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_BOOTP=y
 # CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
-CONFIG_IP_ALIAS=y
+# CONFIG_IP_MROUTE is not set
+# CONFIG_INET_ECN is not set
 CONFIG_SYN_COOKIES=y
-
-#
-# (it is safe to leave these untouched)
-#
-# CONFIG_SKB_LARGE is not set
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
+CONFIG_ATM=y
+# CONFIG_ATM_CLIP is not set
+# CONFIG_ATM_LANE is not set
 
 #
 #  
@@ -352,10 +196,11 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_BRIDGE 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
@@ -366,55 +211,6 @@ CONFIG_SYN_COOKIES=y
 #
 # CONFIG_NET_SCHED is not set
 
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-CONFIG_IRDA_OPTIONS=y
-
-#
-#   IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-# CONFIG_IRDA_DEBUG is not set
-# CONFIG_IRDA_COMPRESSION is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-# CONFIG_IRPORT_SIR is not set
-
-#
-# FIR device drivers
-#
-# CONFIG_NSC_FIR is not set
-CONFIG_WINBOND_FIR=m
-# CONFIG_TOSHIBA_FIR is not set
-# CONFIG_SMC_IRCC_FIR is not set
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
 #
 # Network device support
 #
@@ -427,13 +223,13 @@ CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
 # CONFIG_NET_SB1000 is not set
 
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
 CONFIG_NET_VENDOR_3COM=y
 # CONFIG_EL1 is not set
 # CONFIG_EL2 is not set
@@ -441,12 +237,15 @@ CONFIG_NET_VENDOR_3COM=y
 # CONFIG_EL16 is not set
 # CONFIG_EL3 is not set
 # CONFIG_3C515 is not set
+# CONFIG_ELMC is not set
+# CONFIG_ELMC_II is not set
 CONFIG_VORTEX=y
 # CONFIG_LANCE is not set
 # CONFIG_NET_VENDOR_SMC is not set
 # CONFIG_NET_VENDOR_RACAL is not set
 # CONFIG_AT1700 is not set
 # CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
 # CONFIG_NET_ISA is not set
 CONFIG_NET_PCI=y
 # CONFIG_PCNET32 is not set
@@ -454,28 +253,34 @@ CONFIG_NET_PCI=y
 # CONFIG_AC3200 is not set
 # CONFIG_APRICOT is not set
 # CONFIG_CS89x0 is not set
-# CONFIG_DE4X5 is not set
 CONFIG_TULIP=m
+# CONFIG_DE4X5 is not set
 # CONFIG_DGRS is not set
 # CONFIG_DM9102 is not set
 # CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PM is not set
 # CONFIG_LNE390 is not set
-# CONFIG_NE3210 is not set
+# CONFIG_NATSEMI is not set
 CONFIG_NE2K_PCI=y
-# CONFIG_RTL8129 is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
 # CONFIG_8139TOO is not set
+# CONFIG_RTL8129 is not set
 # CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
 # CONFIG_TLAN is not set
 # CONFIG_VIA_RHINE is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_HAPPYMEAL is not set
 # CONFIG_NET_POCKET is not set
 
 #
 # Ethernet (1000 Mbit)
 #
-# CONFIG_YELLOWFIN is not set
 # CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
@@ -498,138 +303,306 @@ CONFIG_SLIP_MODE_SLIP6=y
 # CONFIG_NET_RADIO is not set
 
 #
-# Token Ring devices
+# 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=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+CONFIG_IRDA_OPTIONS=y
+
+#
+#   IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+CONFIG_IRDA_FAST_RR=y
+CONFIG_IRDA_DEBUG=y
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+# CONFIG_IRPORT_SIR is not set
+
+#
+# FIR device drivers
+#
+# CONFIG_NSC_FIR is not set
+CONFIG_WINBOND_FIR=m
+# CONFIG_TOSHIBA_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+
+#
+# Dongle support
+#
+# CONFIG_DONGLE 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=y
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+CONFIG_BLK_DEV_OFFBOARD=y
+CONFIG_IDEDMA_PCI_AUTO=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_PCI_WIP is not set
+# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_AEC62XX_TUNING is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_WDC_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD7409 is not set
+# CONFIG_AMD7409_OVERRIDE is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+CONFIG_BLK_DEV_CY82C693=y
+# 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_NS87415 is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_PDC202XX=y
+# CONFIG_PDC202XX_BURST is not set
+# CONFIG_BLK_DEV_OSB4 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=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_DIGI is not set
+# CONFIG_ESPSERIAL is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINK is not set
+# CONFIG_N_HDLC is not set
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+CONFIG_SERIAL_21285=y
+CONFIG_SERIAL_21285_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+
+#
+# Joysticks
 #
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
+# CONFIG_JOYSTICK is not set
 
 #
-# Wan interfaces
+# Input core support is needed for joysticks
 #
-# CONFIG_WAN is not set
+# CONFIG_QIC02_TAPE is not set
 
 #
-# ATA/IDE/MFM/RLL support
+# Watchdog Cards
 #
-CONFIG_IDE=y
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_SOFT_WATCHDOG=y
+# CONFIG_WDT is not set
+# CONFIG_WDTPCI is not set
+# CONFIG_PCWATCHDOG is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_MIXCOMWD is not set
+# CONFIG_I810_TCO is not set
+CONFIG_21285_WATCHDOG=m
+CONFIG_977_WATCHDOG=m
+CONFIG_DS1620=y
+CONFIG_NWBUTTON=y
+CONFIG_NWBUTTON_REBOOT=y
+CONFIG_NWFLASH=m
+# CONFIG_INTEL_RNG is not set
+CONFIG_NVRAM=m
+CONFIG_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
 
 #
-# IDE, ATA and ATAPI Block devices
+# Ftape, the floppy tape device driver
 #
-CONFIG_BLK_DEV_IDE=y
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
 
 #
-# Please see Documentation/ide.txt for help/info on IDE drives
+# Multimedia devices
 #
-# CONFIG_BLK_DEV_HD_IDE is not set
-# CONFIG_BLK_DEV_HD is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-# CONFIG_BLK_DEV_IDECS is not set
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
+CONFIG_VIDEO_DEV=m
 
 #
-# IDE chipset support/bugfixes
+# Video For Linux
 #
-# 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_RZ1000 is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_OFFBOARD=y
-CONFIG_IDEDMA_PCI_AUTO=y
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDEDMA_PCI_EXPERIMENTAL=y
-# CONFIG_IDEDMA_PCI_WIP is not set
-# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_AEC62XX_TUNING is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_WDC_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD7409 is not set
-# CONFIG_AMD7409_OVERRIDE is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_CMD64X_RAID is not set
-CONFIG_BLK_DEV_CY82C693=y
-# 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_HPT366_FIP is not set
-# CONFIG_HPT366_MODE3 is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_PDC202XX=y
-# CONFIG_PDC202XX_BURST is not set
-# CONFIG_PDC202XX_MASTER is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_VIA82CXXX_TUNING is not set
-CONFIG_BLK_DEV_SL82C105=y
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_IDEDMA_AUTO=y
-CONFIG_BLK_DEV_IDE_MODES=y
+CONFIG_VIDEO_PROC_FS=y
+# CONFIG_I2C_PARPORT is not set
 
 #
-# SCSI support
+# Video Adapters
 #
-# CONFIG_SCSI is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_BUZ is not set
+# CONFIG_VIDEO_ZR36120 is not set
+CONFIG_VIDEO_CYBERPRO=m
 
 #
-# Sound
+# Radio Adapters
 #
-CONFIG_SOUND=m
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-CONFIG_SOUND_ADLIB=m
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_SOFTOSS is not set
-CONFIG_SOUND_SB=m
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-# CONFIG_SOUND_VIDC is not set
-CONFIG_SOUND_WAVEARTIST=m
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_MIROPCM20 is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
 
 #
 # File systems
@@ -647,6 +620,7 @@ CONFIG_MSDOS_FS=m
 # CONFIG_UMSDOS_FS is not set
 CONFIG_VFAT_FS=m
 # CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_RAMFS is not set
 CONFIG_ISO9660_FS=m
@@ -713,12 +687,14 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_SOLARIS_X86_PARTITION is not set
 # CONFIG_UNIXWARE_DISKLABEL is not set
 # CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
 CONFIG_NLS=y
 
 #
 # Native Language Support
 #
+CONFIG_NLS_DEFAULT="iso8859-1"
 CONFIG_NLS_CODEPAGE_437=m
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
@@ -735,6 +711,10 @@ CONFIG_NLS_CODEPAGE_852=m
 # CONFIG_NLS_CODEPAGE_866 is not set
 # CONFIG_NLS_CODEPAGE_869 is not set
 # CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_2=m
 # CONFIG_NLS_ISO8859_3 is not set
@@ -747,6 +727,110 @@ CONFIG_NLS_ISO8859_2=m
 # CONFIG_NLS_ISO8859_14 is not set
 CONFIG_NLS_ISO8859_15=m
 # CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_PC_KEYB=y
+CONFIG_PC_KEYMAP=y
+CONFIG_VGA_CONSOLE=y
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_CLGEN is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_ACORN is not set
+# CONFIG_FB_CLPS711X is not set
+CONFIG_FB_CYBER2000=y
+# CONFIG_FB_SA1100 is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FBCON_ADVANCED=y
+# CONFIG_FBCON_MFB is not set
+# CONFIG_FBCON_CFB2 is not set
+# CONFIG_FBCON_CFB4 is not set
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+# CONFIG_FBCON_CFB32 is not set
+# CONFIG_FBCON_AFB is not set
+# CONFIG_FBCON_ILBM is not set
+# CONFIG_FBCON_IPLAN2P2 is not set
+# CONFIG_FBCON_IPLAN2P4 is not set
+# CONFIG_FBCON_IPLAN2P8 is not set
+# CONFIG_FBCON_MAC is not set
+# CONFIG_FBCON_VGA_PLANES is not set
+CONFIG_FBCON_VGA=y
+# CONFIG_FBCON_HGA is not set
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+CONFIG_FONT_ACORN_8x8=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_AD1816 is not set
+# CONFIG_SOUND_SGALAXY is not set
+CONFIG_SOUND_ADLIB=m
+# CONFIG_SOUND_ACI_MIXER is not set
+# CONFIG_SOUND_CS4232 is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_GUS is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_NM256 is not set
+# CONFIG_SOUND_MAD16 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_PAS_JOYSTICK is not set
+# CONFIG_SOUND_PSS is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_AWE32_SYNTH is not set
+# CONFIG_SOUND_WAVEFRONT is not set
+# CONFIG_SOUND_MAUI is not set
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_OPL3SA1 is not set
+# CONFIG_SOUND_OPL3SA2 is not set
+# CONFIG_SOUND_YMPCI is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+CONFIG_SOUND_WAVEARTIST=m
+# CONFIG_SOUND_TVMIXER is not set
 
 #
 # USB support
@@ -757,7 +841,8 @@ CONFIG_USB_DEBUG=y
 #
 # Miscellaneous USB options
 #
-# CONFIG_USB_DEVICEFS is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
 
 #
 # USB Controllers
@@ -770,7 +855,8 @@ CONFIG_USB_OHCI=m
 # USB Devices
 #
 CONFIG_USB_PRINTER=m
-CONFIG_USB_SCANNER=m
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
 CONFIG_USB_AUDIO=m
 # CONFIG_USB_ACM is not set
 # CONFIG_USB_SERIAL is not set
@@ -785,19 +871,16 @@ CONFIG_USB_AUDIO=m
 # CONFIG_USB_PEGASUS is not set
 # CONFIG_USB_RIO500 is not set
 # CONFIG_USB_DSBR is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_NET1080 is not set
+
+#
+# USB Human Interface Devices (HID)
+#
 
 #
-# USB HID
+#   Input core support is needed for USB HID
 #
-# CONFIG_USB_HID is not set
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_WMFORCE 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
 
 #
 # Kernel hacking
index 11415b3636a70fe62da446c6d24cbc5aa90dc389..92079d370881f074cb6a86711860d49b51be6306 100644 (file)
@@ -2,48 +2,88 @@
 # Automatically generated make config: don't edit
 #
 CONFIG_ARM=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
 
 #
-# System and processor type
+# Loadable module support
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-# CONFIG_ARCH_RPC is not set
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
-# CONFIG_FOOTBRIDGE is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
 CONFIG_ARCH_SA1100=y
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
 # CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_EMPEG is not set
-# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_BITSY is not set
 # CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
 CONFIG_SA1100_GRAPHICSCLIENT=y
+# CONFIG_SA1100_NANOENGINE is not set
 # CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_TIFON is not set
-CONFIG_DISCONTIGMEM=y
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_XP860 is not set
+# CONFIG_ANGELBOOT is not set
+# CONFIG_SA1100_FREQUENCY_SCALE is not set
+# CONFIG_SA1100_VOLTAGE_SCALE is not set
 # CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
 CONFIG_CPU_32=y
 # CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
 CONFIG_CPU_32v4=y
 CONFIG_CPU_SA1100=y
-# CONFIG_ISA_DMA is not set
-CONFIG_ALIGNMENT_TRAP=y
+CONFIG_DISCONTIGMEM=y
 
 #
-# Loadable module support
+# General setup
 #
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_PC_KEYMAP=y
+CONFIG_HOTPLUG=y
 
 #
-# General setup
+# PCMCIA/CardBus support
 #
+CONFIG_PCMCIA=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_SA1100_PCMCIA=y
+CONFIG_VIRTUAL_BUS=y
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
 # CONFIG_BSD_PROCESS_ACCT is not set
@@ -51,22 +91,24 @@ CONFIG_SYSCTL=y
 CONFIG_NWFPE=y
 CONFIG_KCORE_ELF=y
 # CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
 # CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="root=nfs"
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
 # CONFIG_PARPORT is not set
-CONFIG_CMDLINE="ip=off"
 
 #
-# I2O device support
+# Memory Technology Devices (MTD)
 #
-# CONFIG_I2O is not set
-# CONFIG_I2O_PCI is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
+# CONFIG_MTD is not set
 
 #
 # Plug and Play configuration
@@ -78,118 +120,28 @@ CONFIG_CMDLINE="ip=off"
 # Block devices
 #
 # CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_IDE is not set
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
 # CONFIG_BLK_DEV_LOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
 # CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-# CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_SERIAL is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
-
-#
-# PCMCIA character device support
-#
-# CONFIG_AGP is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Console drivers
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_SA1100=y
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_BLK_DEV_FLASH is not set
 
 #
 # Networking options
 #
-# CONFIG_PACKET is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
 # CONFIG_NETLINK is not set
 # CONFIG_NETFILTER is not set
 # CONFIG_FILTER is not set
@@ -200,16 +152,10 @@ CONFIG_INET=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_BOOTP=y
 # CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
+# CONFIG_INET_ECN is not set
 # CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
@@ -220,9 +166,9 @@ CONFIG_SKB_LARGE=y
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
 # CONFIG_LLC is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
@@ -234,16 +180,6 @@ CONFIG_SKB_LARGE=y
 #
 # CONFIG_NET_SCHED is not set
 
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
 #
 # Network device support
 #
@@ -254,7 +190,9 @@ CONFIG_NETDEVICES=y
 #
 # CONFIG_ARCNET is not set
 # CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
 # CONFIG_NET_SB1000 is not set
 
 #
@@ -270,12 +208,10 @@ CONFIG_NET_VENDOR_SMC=y
 # CONFIG_ULTRA32 is not set
 CONFIG_SMC9194=y
 # CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_DM9102 is not set
 # CONFIG_AT1700 is not set
 # CONFIG_DEPCA is not set
 # CONFIG_NET_ISA is not set
-# CONFIG_NET_EISA is not set
+# CONFIG_NET_PCI is not set
 # CONFIG_NET_POCKET is not set
 
 #
@@ -295,7 +231,7 @@ CONFIG_SMC9194=y
 # CONFIG_NET_RADIO is not set
 
 #
-# Token Ring driver support
+# Token Ring devices
 #
 # CONFIG_TR is not set
 # CONFIG_NET_FC is not set
@@ -310,7 +246,70 @@ CONFIG_SMC9194=y
 #
 # PCMCIA network device support
 #
-# CONFIG_NET_PCMCIA is not set
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=m
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=m
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=m
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
 
 #
 # SCSI support
@@ -318,54 +317,221 @@ CONFIG_SMC9194=y
 # CONFIG_SCSI is not set
 
 #
-# Filesystems
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=38400
+# CONFIG_TOUCHSCREEN_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_BITSY is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_PCMCIA_SERIAL is not set
+
+#
+# File systems
 #
 # CONFIG_QUOTA is not set
 # CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
 # CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
 # CONFIG_AFFS_FS is not set
 # CONFIG_HFS_FS is not set
 # CONFIG_BFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_MSDOS_FS is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
 # CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
+CONFIG_VFAT_FS=m
 # CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
 # CONFIG_CRAMFS is not set
+CONFIG_RAMFS=y
 # CONFIG_ISO9660_FS is not set
 # CONFIG_JOLIET is not set
 # CONFIG_MINIX_FS 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_SYSV_FS_WRITE is not set
 # CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
 # CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
 
 #
 # Network File Systems
 #
 # CONFIG_CODA_FS is not set
 CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
 CONFIG_ROOT_NFS=y
 # CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
 CONFIG_SUNRPC=y
 CONFIG_LOCKD=y
 # CONFIG_SMB_FS is not set
 # CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_MOUNT_SUBDIR is not set
+# CONFIG_NCPFS_NDS_DOMAINS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
 
 #
 # Partition Types
 #
 # CONFIG_PARTITION_ADVANCED is not set
 CONFIG_MSDOS_PARTITION=y
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
 
 #
 # Kernel hacking
@@ -373,6 +539,6 @@ CONFIG_MSDOS_PARTITION=y
 CONFIG_FRAME_POINTER=y
 CONFIG_DEBUG_ERRORS=y
 CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO is not set
 # CONFIG_MAGIC_SYSRQ is not set
 # CONFIG_DEBUG_LL is not set
diff --git a/arch/arm/def-configs/integrator b/arch/arm/def-configs/integrator
new file mode 100644 (file)
index 0000000..07133bf
--- /dev/null
@@ -0,0 +1,511 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+CONFIG_ARCH_INTEGRATOR=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_CLPS711X is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+
+#
+# CLPS711X/EP721X Implementations
+#
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ARM720=y
+CONFIG_CPU_ARM920=y
+CONFIG_CPU_ARM920_CPU_IDLE=y
+CONFIG_CPU_ARM920_I_CACHE_ON=y
+CONFIG_CPU_ARM920_D_CACHE_ON=y
+# CONFIG_CPU_ARM920_WRITETHROUGH is not set
+# CONFIG_DISCONTIGMEM is not set
+
+#
+# General setup
+#
+# CONFIG_ANGELBOOT is not set
+CONFIG_PCI_INTEGRATOR=y
+CONFIG_PCI=y
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_PCI_NAMES=y
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="root=1f04 mem=32M"
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_MTDRAM is not set
+
+#
+# MTD drivers for mapped chips
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_JEDEC is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_PHYSMAP is not set
+
+#
+# Drivers for chip mappings
+#
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_VMAX is not set
+
+#
+# User modules and translation layers for MTD devices
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+CONFIG_MTD_ARM=y
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_INITRD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+CONFIG_TULIP=y
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+CONFIG_EEPRO100=y
+CONFIG_EEPRO100_PM=y
+# CONFIG_LNE390 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_8139TOO is not set
+# CONFIG_RTL8129 is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_AMBA=y
+CONFIG_SERIAL_INTEGRATOR=y
+CONFIG_SERIAL_AMBA_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_MOUNT_SUBDIR is not set
+# CONFIG_NCPFS_NDS_DOMAINS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+# CONFIG_MSDOS_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Console drivers
+#
+CONFIG_KMI_KEYB=y
+CONFIG_PC_KEYMAP=y
+CONFIG_VGA_CONSOLE=y
+# CONFIG_FB is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_LL=y
diff --git a/arch/arm/def-configs/neponset b/arch/arm/def-configs/neponset
new file mode 100644 (file)
index 0000000..b77cbd1
--- /dev/null
@@ -0,0 +1,576 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+CONFIG_SA1100_ASSABET=y
+CONFIG_ASSABET_NEPONSET=y
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_XP860 is not set
+CONFIG_ANGELBOOT=y
+CONFIG_SA1111=y
+CONFIG_SA1100_FREQUENCY_SCALE=y
+# CONFIG_SA1100_VOLTAGE_SCALE is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_PC_KEYMAP=y
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_SA1100_PCMCIA=y
+CONFIG_VIRTUAL_BUS=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="keepinitrd"
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# 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_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_FLASH is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+CONFIG_NET_VENDOR_SMC=y
+# CONFIG_WD80x3 is not set
+# CONFIG_ULTRA is not set
+# CONFIG_ULTRA32 is not set
+CONFIG_SMC9194=y
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_YELLOWFIN is not set
+# CONFIG_ACENIC is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+CONFIG_PCMCIA_NETCARD=y
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=9600
+CONFIG_TOUCHSCREEN_UCB1200=y
+# CONFIG_TOUCHSCREEN_BITSY is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_PCMCIA_SERIAL is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_RAMFS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_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_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_MOUNT_SUBDIR is not set
+# CONFIG_NCPFS_NDS_DOMAINS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_MQ200 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_FONTWIDTH8_ONLY=y
+CONFIG_FBCON_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+CONFIG_SOUND_UDA1341=y
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_SOUND_OSS is not set
+# CONFIG_SOUND_TVMIXER is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_LL is not set
diff --git a/arch/arm/def-configs/pangolin b/arch/arm/def-configs/pangolin
new file mode 100644 (file)
index 0000000..6aebc40
--- /dev/null
@@ -0,0 +1,491 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_ARM=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_CERF is not set
+# CONFIG_SA1100_BITSY is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_GRAPHICSCLIENT is not set
+# CONFIG_SA1100_NANOENGINE is not set
+# CONFIG_SA1100_VICTOR is not set
+# CONFIG_SA1100_SHERMAN is not set
+# CONFIG_SA1100_XP860 is not set
+CONFIG_SA1100_PANGOLIN=y
+# CONFIG_ANGELBOOT is not set
+# CONFIG_SA1100_FREQUENCY_SCALE is not set
+# CONFIG_SA1100_VOLTAGE_SCALE is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+CONFIG_CPU_32v4=y
+CONFIG_CPU_SA1100=y
+CONFIG_DISCONTIGMEM=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_PC_KEYMAP=y
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_SA1100_PCMCIA=y
+CONFIG_VIRTUAL_BUS=y
+CONFIG_NET=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_NWFPE=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
+# CONFIG_ARTHUR is not set
+CONFIG_CMDLINE="keepinitrd"
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_JEDEC is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_MIXMEM is not set
+# CONFIG_MTD_NORA is not set
+# CONFIG_MTD_OCTAGON is not set
+# CONFIG_MTD_PNC2000 is not set
+# CONFIG_MTD_RPXLITE is not set
+# CONFIG_MTD_VMAX is not set
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL 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_DEV_DAC960 is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_LVM is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_BLK_DEV_FLASH=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_PCI is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_YELLOWFIN is not set
+# CONFIG_ACENIC is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_IBMTR is not set
+# CONFIG_NET_PCMCIA_RADIO is not set
+CONFIG_PCMCIA_NETCARD=y
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_DMA_NONPCI is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SA1100_DEFAULT_BAUDRATE=115200
+# CONFIG_TOUCHSCREEN_UCB1200 is not set
+# CONFIG_TOUCHSCREEN_BITSY is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=32
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_PCMCIA_SERIAL is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS_FS=y
+CONFIG_JFFS_FS_VERBOSE=1
+CONFIG_CRAMFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_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_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_MOUNT_SUBDIR is not set
+# CONFIG_NCPFS_NDS_DOMAINS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_FB is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_LL is not set
index afbfda2da501b6e299db8f727677a52281376daf..6d744d34d1e1d5ede02459be5fab64dc67017dc7 100644 (file)
@@ -2,45 +2,77 @@
 # Automatically generated make config: don't edit
 #
 CONFIG_ARM=y
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
 CONFIG_UID16=y
 
 #
 # Code maturity level options
 #
 CONFIG_EXPERIMENTAL=y
+# CONFIG_OBSOLETE is not set
 
 #
-# System and Processor Type
+# Loadable module support
 #
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-CONFIG_ARCH_RPC=y
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_ARCA5K is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CO285 is not set
 # CONFIG_ARCH_EBSA110 is not set
-# CONFIG_FOOTBRIDGE is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+CONFIG_ARCH_RPC=y
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_CLPS711X is not set
+
+#
+# Archimedes/A5000 Implementations
+#
+
+#
+# Footbridge Implementations
+#
+
+#
+# SA11x0 Implementations
+#
+
+#
+# CLPS711X/EP721X Implementations
+#
 CONFIG_ARCH_ACORN=y
+# CONFIG_FOOTBRIDGE is not set
+# CONFIG_FOOTBRIDGE_HOST is not set
+# CONFIG_FOOTBRIDGE_ADDIN is not set
 CONFIG_CPU_32=y
 # CONFIG_CPU_26 is not set
+
+#
+# Processor Type
+#
 CONFIG_CPU_32v3=y
 CONFIG_CPU_ARM6=y
 CONFIG_CPU_ARM7=y
 CONFIG_CPU_SA110=y
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_SBUS is not set
-# CONFIG_PCMCIA is not set
-# CONFIG_ALIGNMENT_TRAP is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
+# CONFIG_DISCONTIGMEM is not set
 
 #
 # General setup
 #
+# CONFIG_ANGELBOOT is not set
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_ISA_DMA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
 CONFIG_NET=y
 CONFIG_SYSVIPC=y
 # CONFIG_BSD_PROCESS_ACCT is not set
@@ -51,7 +83,9 @@ CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_AOUT=y
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_PM is not set
 # CONFIG_ARTHUR is not set
+# CONFIG_ALIGNMENT_TRAP is not set
 
 #
 # Parallel port support
@@ -69,13 +103,9 @@ CONFIG_PARPORT_PC_SUPERIO=y
 # CONFIG_PARPORT_1284 is not set
 
 #
-# I2O device support
+# Memory Technology Devices (MTD)
 #
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
+# CONFIG_MTD is not set
 
 #
 # Plug and Play configuration
@@ -90,129 +120,18 @@ CONFIG_BLK_DEV_FD=y
 # CONFIG_BLK_DEV_XD is not set
 # CONFIG_PARIDE is not set
 # CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
 CONFIG_BLK_DEV_LOOP=m
 # CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_LVM is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_RAID0 is not set
-# CONFIG_RAID15_DANGEROUS is not set
 CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
 CONFIG_BLK_DEV_INITRD=y
 
 #
 # Acorn-specific block devices
 #
 
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_ATOMWIDE_SERIAL=y
-CONFIG_DUALSP_SERIAL=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_UNIX98_PTYS is not set
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_PHILIPSPAR is not set
-# CONFIG_I2C_ELV is not set
-# CONFIG_I2C_VELLEMAN is not set
-# CONFIG_I2C_ALGOPCF is not set
-CONFIG_I2C_CHARDEV=y
-
-#
-# 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 is not set
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
-# CONFIG_AGP is not set
-CONFIG_RPCMOUSE=y
-
-#
-# Console drivers
-#
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_ACORN=y
-# CONFIG_FB_VIRTUAL is not set
-CONFIG_FBCON_ADVANCED=y
-CONFIG_FBCON_MFB=y
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-# CONFIG_FBCON_AFB is not set
-# CONFIG_FBCON_ILBM is not set
-# CONFIG_FBCON_IPLAN2P2 is not set
-# CONFIG_FBCON_IPLAN2P4 is not set
-# CONFIG_FBCON_IPLAN2P8 is not set
-# CONFIG_FBCON_MAC is not set
-# CONFIG_FBCON_VGA_PLANES is not set
-# CONFIG_FBCON_VGA is not set
-# CONFIG_FBCON_HGA is not set
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-CONFIG_FONT_ACORN_8x8=y
-
 #
 # Networking options
 #
@@ -222,19 +141,14 @@ CONFIG_FONT_ACORN_8x8=y
 # CONFIG_FILTER is not set
 CONFIG_UNIX=y
 CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
 # CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_INET_ECN is not set
 # CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
@@ -245,10 +159,11 @@ CONFIG_SKB_LARGE=y
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_BRIDGE 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
@@ -259,16 +174,6 @@ CONFIG_SKB_LARGE=y
 #
 # CONFIG_NET_SCHED is not set
 
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
 #
 # Network device support
 #
@@ -281,14 +186,15 @@ CONFIG_NETDEVICES=y
 # CONFIG_DUMMY is not set
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
 # CONFIG_NET_SB1000 is not set
 
 #
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-CONFIG_ARM_ETHER1=m
-CONFIG_ARM_ETHER3=m
+CONFIG_ARM_ETHER1=y
+CONFIG_ARM_ETHER3=y
 CONFIG_ARM_ETHERH=y
 # CONFIG_NET_VENDOR_3COM is not set
 # CONFIG_LANCE is not set
@@ -303,8 +209,9 @@ CONFIG_ARM_ETHERH=y
 #
 # Ethernet (1000 Mbit)
 #
-# CONFIG_YELLOWFIN is not set
 # CONFIG_ACENIC is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
 # CONFIG_SK98LIN is not set
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
@@ -336,6 +243,16 @@ CONFIG_PPPOE=m
 #
 # CONFIG_WAN is not set
 
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
 #
 # ATA/IDE/MFM/RLL support
 #
@@ -353,6 +270,15 @@ CONFIG_BLK_DEV_IDE=y
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_BLK_DEV_IDEDISK=y
 CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
+# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
+# CONFIG_BLK_DEV_IDEDISK_IBM is not set
+# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
+# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
+# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
+# CONFIG_BLK_DEV_IDEDISK_WD is not set
+# CONFIG_BLK_DEV_COMMERIAL is not set
+# CONFIG_BLK_DEV_TIVO is not set
 # CONFIG_BLK_DEV_IDECS is not set
 CONFIG_BLK_DEV_IDECD=y
 # CONFIG_BLK_DEV_IDETAPE is not set
@@ -372,6 +298,8 @@ CONFIG_BLK_DEV_IDEDMA=y
 CONFIG_BLK_DEV_IDE_RAPIDE=y
 # CONFIG_IDE_CHIPSETS is not set
 CONFIG_IDEDMA_AUTO=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
 # CONFIG_BLK_DEV_IDE_MODES is not set
 
 #
@@ -427,14 +355,14 @@ CONFIG_SCSI_IMM=m
 # CONFIG_SCSI_IZIP_EPP16 is not set
 # CONFIG_SCSI_IZIP_SLOW_CTR is not set
 # CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_SIM710 is not set
 # CONFIG_SCSI_NCR53C7xx 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_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_T128 is not set
 # CONFIG_SCSI_U14_34F is not set
 # CONFIG_SCSI_DEBUG is not set
@@ -444,7 +372,7 @@ CONFIG_SCSI_ACORNSCSI_SYNC=y
 CONFIG_SCSI_ARXESCSI=m
 CONFIG_SCSI_CUMANA_2=m
 CONFIG_SCSI_EESOXSCSI=m
-CONFIG_SCSI_POWERTECSCSI=m
+CONFIG_SCSI_POWERTECSCSI=y
 
 #
 # The following drivers are not fully supported
@@ -453,52 +381,101 @@ CONFIG_SCSI_CUMANA_1=m
 CONFIG_SCSI_OAK1=m
 
 #
-# Sound
+# I2O device support
 #
-CONFIG_SOUND=m
-# CONFIG_SOUND_CMPCI is not set
-# CONFIG_SOUND_EMU10K1 is not set
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_ESSSOLO1 is not set
-# CONFIG_SOUND_MAESTRO is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_TRIDENT is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-CONFIG_SOUND_OSS=m
-# CONFIG_SOUND_TRACEINIT is not set
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_ACI_MIXER is not set
-# CONFIG_SOUND_CS4232 is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_ICH is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_NM256 is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_PAS is not set
-# CONFIG_PAS_JOYSTICK is not set
-# CONFIG_SOUND_PSS is not set
-CONFIG_SOUND_SOFTOSS=m
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_AWE32_SYNTH is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_UART6850 is not set
-# CONFIG_SOUND_AEDSP16 is not set
-CONFIG_SOUND_VIDC=m
-# CONFIG_SOUND_WAVEARTIST is not set
+# CONFIG_I2O is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+CONFIG_ATOMWIDE_SERIAL=y
+CONFIG_DUALSP_SERIAL=y
+CONFIG_SERIAL_EXTENDED=y
+# CONFIG_SERIAL_MANY_PORTS is not set
+CONFIG_SERIAL_SHARE_IRQ=y
+# CONFIG_SERIAL_DETECT_IRQ is not set
+# CONFIG_SERIAL_MULTIPORT is not set
+# CONFIG_HUB6 is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_PHILIPSPAR is not set
+# CONFIG_I2C_ELV is not set
+# CONFIG_I2C_VELLEMAN is not set
+# CONFIG_I2C_ALGOPCF is not set
+CONFIG_I2C_CHARDEV=y
+
+#
+# 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 is not set
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+
+#
+# Joysticks
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+CONFIG_RPCMOUSE=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
 
 #
 # File systems
@@ -516,6 +493,7 @@ CONFIG_ADFS_FS=y
 # CONFIG_UMSDOS_FS is not set
 # CONFIG_VFAT_FS is not set
 # CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_RAMFS is not set
 CONFIG_ISO9660_FS=y
@@ -582,12 +560,14 @@ CONFIG_BSD_DISKLABEL=y
 CONFIG_SOLARIS_X86_PARTITION=y
 # CONFIG_UNIXWARE_DISKLABEL is not set
 CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
 CONFIG_SUN_PARTITION=y
 CONFIG_NLS=y
 
 #
 # Native Language Support
 #
+CONFIG_NLS_DEFAULT="iso8859-1"
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_CODEPAGE_737=m
 CONFIG_NLS_CODEPAGE_775=m
@@ -604,6 +584,10 @@ CONFIG_NLS_CODEPAGE_865=m
 CONFIG_NLS_CODEPAGE_866=m
 CONFIG_NLS_CODEPAGE_869=m
 CONFIG_NLS_CODEPAGE_874=m
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
 CONFIG_NLS_ISO8859_1=m
 CONFIG_NLS_ISO8859_2=m
 CONFIG_NLS_ISO8859_3=m
@@ -616,6 +600,99 @@ CONFIG_NLS_ISO8859_9=m
 # CONFIG_NLS_ISO8859_14 is not set
 # CONFIG_NLS_ISO8859_15 is not set
 CONFIG_NLS_KOI8_R=m
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_FB=y
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_ACORN=y
+# CONFIG_FB_CLPS711X is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_SA1100 is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FBCON_ADVANCED=y
+CONFIG_FBCON_MFB=y
+CONFIG_FBCON_CFB2=y
+CONFIG_FBCON_CFB4=y
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+CONFIG_FBCON_CFB32=y
+# CONFIG_FBCON_AFB is not set
+# CONFIG_FBCON_ILBM is not set
+# CONFIG_FBCON_IPLAN2P2 is not set
+# CONFIG_FBCON_IPLAN2P4 is not set
+# CONFIG_FBCON_IPLAN2P8 is not set
+# CONFIG_FBCON_MAC is not set
+# CONFIG_FBCON_VGA_PLANES is not set
+# CONFIG_FBCON_VGA is not set
+# CONFIG_FBCON_HGA is not set
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+CONFIG_FONT_ACORN_8x8=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+CONFIG_SOUND_OSS=m
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_AD1816 is not set
+# CONFIG_SOUND_SGALAXY is not set
+# CONFIG_SOUND_ADLIB is not set
+# CONFIG_SOUND_ACI_MIXER is not set
+# CONFIG_SOUND_CS4232 is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_GUS is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_NM256 is not set
+# CONFIG_SOUND_MAD16 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_PAS_JOYSTICK is not set
+# CONFIG_SOUND_PSS is not set
+# CONFIG_SOUND_SB is not set
+# CONFIG_SOUND_AWE32_SYNTH is not set
+# CONFIG_SOUND_WAVEFRONT is not set
+# CONFIG_SOUND_MAUI is not set
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_OPL3SA1 is not set
+# CONFIG_SOUND_OPL3SA2 is not set
+# CONFIG_SOUND_YMPCI is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+CONFIG_SOUND_VIDC=m
+# CONFIG_SOUND_TVMIXER is not set
 
 #
 # USB support
@@ -627,7 +704,7 @@ CONFIG_NLS_KOI8_R=m
 #
 CONFIG_FRAME_POINTER=y
 CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_USER is not set
+CONFIG_DEBUG_USER=y
 # CONFIG_DEBUG_INFO is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_LL=y
diff --git a/arch/arm/def-configs/sherman b/arch/arm/def-configs/sherman
new file mode 100644 (file)
index 0000000..453fbf2
--- /dev/null
@@ -0,0 +1,210 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_ARM=y
+
+#
+# System and processor type
+#
+# CONFIG_ARCH_ARC is not set
+# CONFIG_ARCH_A5K is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_FOOTBRIDGE is not set
+CONFIG_ARCH_SA1100=y
+CONFIG_CPU_SA1100=y
+# CONFIG_SA1100_BRUTUS is not set
+# CONFIG_SA1100_EMPEG is not set
+# CONFIG_SA1100_ITSY is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_VICTOR is not set
+CONFIG_SA1100_SHERMAN=y
+# CONFIG_VICTOR_BOARD1 is not set
+# CONFIG_ARCH_ACORN is not set
+# CONFIG_ISA_DMA is not set
+CONFIG_CPU_32=y
+# CONFIG_CPU_26 is not set
+# CONFIG_CPU_ARM2 is not set
+# CONFIG_CPU_ARM3 is not set
+# CONFIG_CPU_ARM6 is not set
+# CONFIG_CPU_ARM7 is not set
+CONFIG_CPU_SA110=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ALIGNMENT_TRAP is not set
+# CONFIG_TEXT_SECTIONS is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# General setup
+#
+# CONFIG_NET is not set
+# CONFIG_SYSVIPC is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_SYSCTL is not set
+CONFIG_NWFPE=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+# CONFIG_PARPORT is not set
+CONFIG_CMDLINE=""
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_IDEDISK is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_IDE_CHIPSETS is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE_PARPORT is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_FLASH=y
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+# CONFIG_MSDOS_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+
+#
+# Kernel hacking
+#
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_DEBUG_LL=y
diff --git a/arch/arm/def-configs/thinclient b/arch/arm/def-configs/thinclient
deleted file mode 100644 (file)
index 5ad8986..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-CONFIG_UID16=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# System and processor type
-#
-# CONFIG_ARCH_ARC is not set
-# CONFIG_ARCH_A5K is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_FOOTBRIDGE is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_BRUTUS is not set
-# CONFIG_SA1100_EMPEG is not set
-# CONFIG_SA1100_ITSY is not set
-# CONFIG_SA1100_BITSY is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-CONFIG_SA1100_THINCLIENT=y
-# CONFIG_SA1100_GRAPHICSCLIENT is not set
-# CONFIG_SA1100_VICTOR is not set
-# CONFIG_SA1100_TIFON is not set
-CONFIG_DISCONTIGMEM=y
-# CONFIG_ARCH_ACORN is not set
-CONFIG_CPU_32=y
-# CONFIG_CPU_26 is not set
-CONFIG_CPU_32v4=y
-CONFIG_CPU_SA1100=y
-# CONFIG_PCI is not set
-# CONFIG_ISA is not set
-# CONFIG_ISA_DMA is not set
-# CONFIG_SBUS is not set
-# CONFIG_PCMCIA is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-
-#
-# General setup
-#
-CONFIG_NET=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_NWFPE=y
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-CONFIG_CMDLINE="root=nfs"
-# CONFIG_LEDS is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-# CONFIG_I2O_BLOCK is not set
-# CONFIG_I2O_LAN is not set
-# CONFIG_I2O_SCSI is not set
-# CONFIG_I2O_PROC is not set
-
-#
-# 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_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_LVM is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_MD_LINEAR is not set
-# CONFIG_MD_STRIPED is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_BLK_DEV_FLASH=y
-
-#
-# Character devices
-#
-CONFIG_VT=y
-# CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_SERIAL is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=32
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MOUSE is not set
-
-#
-# Joysticks
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-# CONFIG_DRM_TDFX is not set
-# CONFIG_AGP is not set
-
-#
-# Console drivers
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_SA1100=y
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB2=y
-CONFIG_FBCON_CFB4=y
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_FONTWIDTH8_ONLY=y
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-# CONFIG_NETLINK is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
-# CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#  
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_ARM_AM79C961A is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-CONFIG_NET_VENDOR_SMC=y
-# CONFIG_WD80x3 is not set
-# CONFIG_ULTRA is not set
-# CONFIG_ULTRA32 is not set
-CONFIG_SMC9194=y
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# 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
-
-#
-# File systems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_ADFS_FS_RW is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_RAMFS is not set
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_NTFS_RW is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVFS_MOUNT is not set
-# CONFIG_DEVFS_DEBUG is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_QNX4FS_RW is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_UDF_RW is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_UFS_FS_WRITE is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-CONFIG_ROOT_NFS=y
-# CONFIG_NFSD is not set
-# CONFIG_NFSD_V3 is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_MOUNT_SUBDIR is not set
-# CONFIG_NCPFS_NDS_DOMAINS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_NLS is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_LL is not set
index e79dd71e6ef29027972a9f70cc696ef82d507636..3ee0d0381e63d7b385c1a6dc66b7acb32747085a 100644 (file)
@@ -463,8 +463,29 @@ char * __init pcibios_setup(char *str)
        return str;
 }
 
+/*
+ * From arch/i386/kernel/pci-i386.c:
+ *
+ * We need to avoid collisions with `mirrored' VGA ports
+ * and other strange ISA hardware, so we always want the
+ * addresses to be allocated in the 0x000-0x0ff region
+ * modulo 0x400.
+ *
+ * Why? Because some silly external IO cards only decode
+ * the low 10 bits of the IO address. The 0x00-0xff region
+ * is reserved for motherboard devices that decode all 16
+ * bits, so it's ok to allocate at, say, 0x2800-0x28ff,
+ * but we want to try to avoid allocating at 0x2900-0x2bff
+ * which might have be mirrored at 0x0100-0x03ff..
+ */
 void pcibios_align_resource(void *data, struct resource *res, unsigned long size)
 {
+       if (res->flags & IORESOURCE_IO) {
+               unsigned long start = res->start;
+
+               if (start & 0x300)
+                       res->start = (start + 0x3ff) & ~0x3ff;
+       }
 }
 
 /**
index 8c427b3797e786c734a3e6f788872573dab75bd0..bf265fab3fe92f9e2a9ddec613048e9cda774dc2 100644 (file)
@@ -258,17 +258,21 @@ static void dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs)
 void __init dc21285_init(struct arm_pci_sysdata *sysdata)
 {
        unsigned long cntl;
-       unsigned int mem_size;
+       unsigned int mem_size, mem_mask;
        unsigned int pci_cmd = PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
                                PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE;
        int cfn_mode;
 
+       mem_size = (unsigned int)high_memory - PAGE_OFFSET;
+       for (mem_mask = 0x00100000; mem_mask < 0x10000000; mem_mask <<= 1)
+               if (mem_mask >= mem_size)
+                       break;          
+
        /*
         * These registers need to be set up whether we're the
         * central function or not.
         */
-       mem_size = (unsigned int)high_memory - PAGE_OFFSET;
-       *CSR_SDRAMBASEMASK    = (mem_size - 1) & 0x0ffc0000;
+       *CSR_SDRAMBASEMASK    = (mem_mask - 1) & 0x0ffc0000;
        *CSR_SDRAMBASEOFFSET  = 0;
        *CSR_ROMBASEMASK      = 0x80000000;
        *CSR_CSRBASEMASK      = 0;
index 2ad2edf3b98e719239541dccbd8af56338cd5af8..121a2792b9a794a6fa0db27579bffa0b2bd66c53 100644 (file)
@@ -156,7 +156,7 @@ static void a5k_floppy_enable_dma(dmach_t channel, dma_t *dma)
        memcpy((void *)0x1c, fiqhandler_start, fiqhandler_length);
        regs.ARM_r9 = dma->buf.length;
        regs.ARM_r10 = dma->buf.address;
-       regs.ARM_fp = (int)PCIO_FLOPPYDMABASE;
+       regs.ARM_fp = FLOPPYDMA_BASE;
        set_fiq_regs(&regs);
        enable_irq(dma->dma_irq);
 }
@@ -191,7 +191,7 @@ static struct dma_ops sound_dma_ops = {
 void __init arch_dma_init(dma_t *dma)
 {
 #if defined(CONFIG_BLK_DEV_FD1772) || defined(CONFIG_BLK_DEV_FD1772_MODULE)
-       if (machine_is_arc()) {
+       if (machine_is_archimedes()) {
                dma[DMA_VIRTUAL_FLOPPY0].dma_irq = 64;
                dma[DMA_VIRTUAL_FLOPPY0].d_ops   = &arc_floppy_data_dma_ops;
                dma[DMA_VIRTUAL_FLOPPY1].dma_irq = 65;
index c8c737404eb24c84499b08a3b41efae2036e6fb8..e659b966d346226196a46cfbe2b86219f711540e 100644 (file)
@@ -84,7 +84,7 @@
                strb    r12, [r12, #0x38]       @ Disable FIQ register
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     r4, #ioc_base_high              @ point at IOC
                .if     ioc_base_low
                orr     r4, r4, #ioc_base_low
@@ -165,36 +165,23 @@ irq_prio_h:       .byte    0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
-               mov     r4, #0xf3000000
-               ldrb    \irqstat, [r4]                  @ get interrupts
-               adr     \base, irq_prio_ebsa110
-
-               teq     \irqstat, #0
-               ldrneb  \irqnr, [\base, \irqstat]       @ get IRQ number
+               .macro  get_irqnr_and_base, irqnr, stat, base, tmp
+               mov     \base, #IRQ_STAT
+               ldrb    \stat, [\base]                  @ get interrupts
+               mov     \irqnr, #0
+               tst     \stat, #15
+               addeq   \irqnr, \irqnr, #4
+               moveq   \stat, \stat, lsr #4
+               tst     \stat, #3
+               addeq   \irqnr, \irqnr, #2
+               moveq   \stat, \stat, lsr #2
+               tst     \stat, #1
+               addeq   \irqnr, \irqnr, #1
+               moveq   \stat, \stat, lsr #1
+               tst     \stat, #1                       @ bit 0 should be set
                .endm
 
                .macro  irq_prio_table
-irq_prio_ebsa110:
-               .byte    0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    4, 4, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    5, 5, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    5, 5, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-
-               .byte    7, 0, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    4, 4, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    5, 5, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-               .byte    5, 5, 1, 1, 2, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2
-
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
-               .byte    6, 6, 6, 6, 2, 2, 2, 2, 3, 3, 6, 6, 2, 2, 2, 2
                .endm
 
 #elif defined(CONFIG_ARCH_SHARK)
@@ -202,7 +189,7 @@ irq_prio_ebsa110:
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     r4, #0xe0000000
                orr     r4, r4, #0x20
 
@@ -238,7 +225,7 @@ irq_prio_ebsa110:
                .equ    dc21285_high, ARMCSR_BASE & 0xff000000
                .equ    dc21285_low, ARMCSR_BASE & 0x00ffffff
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     r4, #dc21285_high
                .if     dc21285_low
                orr     r4, r4, #dc21285_low
@@ -334,7 +321,7 @@ irq_prio_ebsa110:
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                ldr     \irqstat, =INTCONT_BASE
                ldr     \base, =soft_irq_mask
                ldr     \irqstat, [\irqstat]            @ get interrupts
@@ -362,7 +349,7 @@ ENTRY(soft_irq_mask)
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                ldr     \irqstat, =0xffff7000
                ldr     \irqstat, [\irqstat]            @ get interrupts
                ldr     \base, =soft_irq_mask
@@ -390,7 +377,7 @@ ENTRY(soft_irq_mask)
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     r4, #0xfa000000                 @ ICIP = 0xfa050000
                add     r4, r4, #0x00050000
                ldr     \irqstat, [r4]                  @ get irqs
@@ -428,7 +415,7 @@ ENTRY(soft_irq_mask)
                .macro  disable_fiq
                .endm
  
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     \irqstat, #irq_base_addr                @ Virt addr IRQ regs
                add     \irqstat, \irqstat, #0x00001000         @ Status reg
                ldr     \irqstat, [\irqstat, #0]                @ get interrupts
@@ -449,7 +436,7 @@ ENTRY(soft_irq_mask)
                .macro  disable_fiq
                .endm
 
-               .macro  get_irqnr_and_base, irqnr, irqstat, base
+               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
 /* FIXME: should not be using soo many LDRs here */
                ldr     \irqnr, =IO_ADDRESS(INTEGRATOR_IC_BASE)
                ldr     \irqstat, [\irqnr, #IRQ_STATUS]         @ get masked status
@@ -470,6 +457,50 @@ ENTRY(soft_irq_mask)
                .macro  irq_prio_table
                .endm
 
+#elif defined(CONFIG_ARCH_P720T)
+
+               .macro  disable_fiq
+               .endm
+
+#if (INTSR2 - INTSR1) != (INTMR2 - INTMR1)
+#error INTSR stride != INTMR stride
+#endif
+
+               .macro  get_irqnr_and_base, irqnr, stat, base, mask
+               mov     \base, #CLPS7111_BASE
+               ldr     \stat, [\base, #INTSR1]
+               ldr     \mask, [\base, #INTMR1]
+               mov     \irqnr, #4
+               mov     \mask, \mask, lsl #16
+               and     \stat, \stat, \mask, lsr #16
+               movs    \stat, \stat, lsr #4
+               bne     1001f
+
+               add     \base, \base, #INTSR2 - INTSR1
+               ldr     \stat, [\base, #INTSR1]
+               ldr     \mask, [\base, #INTMR1]
+               mov     \irqnr, #16
+               mov     \mask, \mask, lsl #16
+               and     \stat, \stat, \mask, lsr #16
+
+1001:          tst     \stat, #255
+               addeq   \irqnr, \irqnr, #8
+               moveq   \stat, \stat, lsr #8
+               tst     \stat, #15
+               addeq   \irqnr, \irqnr, #4
+               moveq   \stat, \stat, lsr #4
+               tst     \stat, #3
+               addeq   \irqnr, \irqnr, #2
+               moveq   \stat, \stat, lsr #2
+               tst     \stat, #1
+               addeq   \irqnr, \irqnr, #1
+               moveq   \stat, \stat, lsr #1
+               tst     \stat, #1                       @ bit 0 should be set
+               .endm
+
+               .macro  irq_prio_table
+               .endm
+
 #else
 #error Unknown architecture
 #endif
@@ -594,7 +625,7 @@ fpe_not_present:
                adr     r10, wfs_mask_data
                ldmia   r10, {r4, r5, r6, r7, r8}
                ldr     r10, [sp, #S_PC]                @ Load PC
-               sub     r10, r10, #-4
+               sub     r10, r10, #4
                mask_pc r10, r10
                ldrt    r10, [r10]                      @ get instruction
                and     r5, r10, r5
@@ -660,7 +691,7 @@ __irq_svc:  sub     sp, sp, #S_FRAME_SIZE
                add     r4, sp, #S_SP
                mov     r6, lr
                stmia   r4, {r5, r6, r7, r8, r9}        @ save sp_SVC, lr_SVC, pc, cpsr, old_ro
-1:             get_irqnr_and_base r0, r6, r5
+1:             get_irqnr_and_base r0, r6, r5, lr
                movne   r1, sp
                @
                @ routine called with r0 = irq number, r1 = struct pt_regs *
@@ -694,6 +725,28 @@ __und_svc: sub     sp, sp, #S_FRAME_SIZE
                msr     spsr, lr
                ldmia   sp, {r0 - pc}^                  @ Restore SVC registers
 
+               .align  5
+__pabt_svc:    sub     sp, sp, #S_FRAME_SIZE
+               stmia   sp, {r0 - r12}                  @ save r0 - r12
+               ldr     r2, .LCabt
+               add     r0, sp, #S_FRAME_SIZE
+               ldmia   r2, {r2 - r4}                   @ get pc, cpsr
+               add     r5, sp, #S_SP
+               mov     r1, lr
+               stmia   r5, {r0 - r4}                   @ save sp_SVC, lr_SVC, pc, cpsr, old_ro
+               mrs     r9, cpsr                        @ Enable interrupts if they were
+               tst     r3, #I_BIT
+               biceq   r9, r9, #I_BIT                  @ previously
+               msr     cpsr_c, r9
+               mov     r0, r2                          @ address (pc)
+               mov     r1, sp                          @ regs
+               bl      SYMBOL_NAME(do_PrefetchAbort)   @ call abort handler
+               mov     r0, #I_BIT | MODE_SVC
+               msr     cpsr_c, r0
+               ldr     r0, [sp, #S_PSR]
+               msr     spsr, r0
+               ldmia   sp, {r0 - pc}^                  @ load r0 - pc, cpsr
+
                .align  5
 .LCirq:                .word   __temp_irq
 .LCund:                .word   __temp_und
@@ -744,7 +797,7 @@ __irq_usr:  sub     sp, sp, #S_FRAME_SIZE
                stmdb   r8, {sp, lr}^
                alignment_trap r4, r7, __temp_irq
                zero_fp
-1:             get_irqnr_and_base r0, r6, r5
+1:             get_irqnr_and_base r0, r6, r5, lr
                movne   r1, sp
                adrsvc  ne, lr, 1b
                @
@@ -762,7 +815,7 @@ __und_usr:  sub     sp, sp, #S_FRAME_SIZE           @ Allocate frame size in one go
                add     r8, sp, #S_PC
                ldmia   r4, {r5 - r7}
                stmia   r8, {r5 - r7}                   @ Save USR pc, cpsr, old_r0
-               stmdb   r8, {sp, lr}^                   @ Save user r0 - r12
+               stmdb   r8, {sp, lr}^                   @ Save user sp, lr
                alignment_trap r4, r7, __temp_und
                zero_fp
                adrsvc  al, r9, ret_from_sys_call       @ r9  = normal FP return
@@ -960,12 +1013,25 @@ vector_prefetch:
                msr     spsr_c, r13                     @ switch to SVC_32 mode
 
                ands    lr, lr, #15
-               ldreq   lr, .LCtab_pabt
-               ldrne   lr, .LCtab_pabt + 4
+               ldr     lr, [pc, lr, lsl #2]
                movs    pc, lr
 
-.LCtab_pabt:   .word   __pabt_usr
-               .word   __pabt_invalid
+.LCtab_pabt:   .word   __pabt_usr                      @  0 (USR_26 / USR_32)
+               .word   __pabt_invalid                  @  1 (FIQ_26 / FIQ_32)
+               .word   __pabt_invalid                  @  2 (IRQ_26 / IRQ_32)
+               .word   __pabt_svc                      @  3 (SVC_26 / SVC_32)
+               .word   __pabt_invalid                  @  4
+               .word   __pabt_invalid                  @  5
+               .word   __pabt_invalid                  @  6
+               .word   __pabt_invalid                  @  7
+               .word   __pabt_invalid                  @  8
+               .word   __pabt_invalid                  @  9
+               .word   __pabt_invalid                  @  a
+               .word   __pabt_invalid                  @  b
+               .word   __pabt_invalid                  @  c
+               .word   __pabt_invalid                  @  d
+               .word   __pabt_invalid                  @  e
+               .word   __pabt_invalid                  @  f
 
                .align  5
 
index b74d7550f6d60c94a42885a7fbd4ed7316b07164..1be23e8fb861d4c0bd836b93d782dba92ff0c235 100644 (file)
@@ -131,15 +131,14 @@ void set_fiq_regs(struct pt_regs *regs)
 #endif
 #ifdef CONFIG_CPU_32
        "mrs    %0, cpsr
-       bic     %1, %0, #0xf
-       orr     %1, %1, #0xc1
-       msr     cpsr, %1        @ select FIQ mode
+       mov     %1, #0xc1
+       msr     cpsr_c, %1      @ select FIQ mode
        mov     r0, r0
        ldmia   %2, {r8 - r14}
-       msr     cpsr, %0        @ return to SVC mode
+       msr     cpsr_c, %0      @ return to SVC mode
        mov     r0, r0"
 #endif
-       : "=r" (tmp), "=r" (tmp2)
+       : "=&r" (tmp), "=&r" (tmp2)
        : "r" (&regs->ARM_r8)
        /* These registers aren't modified by the above code in a way
           visible to the compiler, but we mark them as clobbers anyway
@@ -164,15 +163,14 @@ void get_fiq_regs(struct pt_regs *regs)
 #endif
 #ifdef CONFIG_CPU_32
        "mrs    %0, cpsr
-       bic     %1, %0, #0xf
-       orr     %1, %1, #0xc1
-       msr     cpsr, %1        @ select FIQ mode
+       mov     %1, #0xc1
+       msr     cpsr_c, %1      @ select FIQ mode
        mov     r0, r0
        stmia   %2, {r8 - r14}
-       msr     cpsr, %0        @ return to SVC mode
+       msr     cpsr_c, %0      @ return to SVC mode
        mov     r0, r0"
 #endif
-       : "=r" (tmp), "=r" (tmp2)
+       : "=&r" (tmp), "=&r" (tmp2)
        : "r" (&regs->ARM_r8)
        /* These registers aren't modified by the above code in a way
           visible to the compiler, but we mark them as clobbers anyway
index f42f3337d730d07f68cfe77c28cff581ea7050ba..13dd0d09e6e255c12d23b7708426f36d177528a1 100644 (file)
@@ -21,7 +21,6 @@
  */
                .section ".text.init",#alloc,#execinstr
 ENTRY(stext)
-ENTRY(_stext)
 __entry:       cmp     pc, #0x02000000
                ldrlt   pc, LC0                 @ if 0x01800000, call at 0x02080000
                teq     r0, #0                  @ Check for old calling method
index 5e141bf51c06a677b35f93727cb926d9b3ddaeaf..5e529e7026cded2440ab51b862da0fa1440cd8af 100644 (file)
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
-#if (TEXTADDR & 0xffff) != 0x8000
-#error TEXTADDR must start at 0xXXXX8000
-#endif
-
 #define K(a,b,c)       ((a) << 24 | (b) << 12 | (c))
 
 /*
- * swapper_pg_dir is the virtual address of the "init_task" page tables.
- * SWAPPER_PGDIR_OFFSET is the offset from the start of memory of the
- * page tables.
+ * We place the page tables 16K below TEXTADDR.  Therefore, we must make sure
+ * that TEXTADDR is correctly set.  Currently, we expect the least significant
+ * "short" to be 0x8000, but we could probably relax this restriction to
+ * TEXTADDR > PAGE_OFFSET + 0x4000
  *
- * Note that at the moment, we assume TEXTADDR is the virtual equivalent
- * of start of memory + 0x8000
+ * Note that swapper_pg_dir is the virtual address of the page tables, and
+ * pgtbl gives us a position-independent reference to these tables.  We can
+ * do this because stext == TEXT_ADDR
  */
-#define SWAPPER_PGDIR_OFFSET   0x4000
+#if (TEXTADDR & 0xffff) != 0x8000
+#error TEXTADDR must start at 0xXXXX8000
+#endif
+
                .globl  SYMBOL_NAME(swapper_pg_dir)
-               .equ    SYMBOL_NAME(swapper_pg_dir),    TEXTADDR - 0x8000 + SWAPPER_PGDIR_OFFSET
+               .equ    SYMBOL_NAME(swapper_pg_dir), TEXTADDR - 0x4000
+
+               .macro  pgtbl, reg
+               adr     \reg, stext
+               sub     \reg, \reg, #0x4000
+               .endm
 
                .section ".text.init",#alloc,#execinstr
                .type   stext, #function
 ENTRY(stext)
-ENTRY(_stext)
 /*
  * Entry point.  The general rules are:
  *  should be called with r0 == 0
@@ -185,7 +190,7 @@ __mmap_switched:
  * r8 = page table flags
  */
 __create_page_tables:
-               add     r4, r5, #SWAPPER_PGDIR_OFFSET
+               pgtbl   r4
                mov     r0, r4
                mov     r3, #0
                add     r2, r0, #0x4000                 @ 16k of page table
index fe40c58b58cc3172d8485daa3e8f563e458f11bd..7d8858b9e1e6fd084788d11b262cdbac44a668d4 100644 (file)
@@ -26,12 +26,12 @@ static unsigned char latch_b_copy;
 /* newval=(oldval & ~mask)|newdata */
 void oldlatch_aupdate(unsigned char mask,unsigned char newdata)
 {
-       if (machine_is_arc()) {
+       if (machine_is_archimedes()) {
                latch_a_copy = (latch_a_copy & ~mask) | newdata;
 
                printk("Latch: A = 0x%02x\n", latch_a_copy);
 
-               outb(latch_a_copy, LATCHAADDR);
+               __raw_writeb(latch_a_copy, LATCHA_BASE);
        } else
                BUG();
 }
@@ -40,19 +40,19 @@ void oldlatch_aupdate(unsigned char mask,unsigned char newdata)
 /* newval=(oldval & ~mask)|newdata */
 void oldlatch_bupdate(unsigned char mask,unsigned char newdata)
 {
-       if (machine_is_arc()) {
+       if (machine_is_archimedes()) {
                latch_b_copy = (latch_b_copy & ~mask) | newdata;
 
                printk("Latch: B = 0x%02x\n", latch_b_copy);
 
-               outb(latch_b_copy, LATCHBADDR);
+               __raw_writeb(latch_b_copy, LATCHB_BASE);
        } else
                BUG();
 }
 
 static void __init oldlatch_init(void)
 {
-       if (machine_is_arc()) {
+       if (machine_is_archimedes()) {
                oldlatch_aupdate(0xff, 0xff);
                /* Thats no FDC reset...*/
                oldlatch_bupdate(0xff, LATCHB_FDCRESET);
index 8e8e3675f2f26c042fedab84e0a444bafce55bd7..76db09e765b15e11ead7276c3dc9c2da3be54ed2 100644 (file)
@@ -31,6 +31,7 @@
 #include "ptrace.h"
 
 extern void c_backtrace (unsigned long fp, int pmode);
+extern void show_pte(struct mm_struct *mm, unsigned long addr);
 
 const char *processor_modes[]=
 { "USER_26", "FIQ_26" , "IRQ_26" , "SVC_26" , "UK4_26" , "UK5_26" , "UK6_26" , "UK7_26" ,
@@ -72,10 +73,14 @@ void dump_mem(unsigned long bottom, unsigned long top)
                printk("%08lx: ", p);
 
                for (i = 0; i < 8; i++, p += 4) {
+                       unsigned int val;
+
                        if (p < bottom || p >= top)
                                printk("         ");
-                       else
-                               printk("%08lx ", *(unsigned long *)p);
+                       else {
+                               __get_user(val, (unsigned long *)p);
+                               printk("%08x ", val);
+                       }
                        if (i == 3)
                                printk(" ");
                }
@@ -91,45 +96,57 @@ void dump_mem(unsigned long bottom, unsigned long top)
 #define VMALLOC_OFFSET (8*1024*1024)
 #define MODULE_RANGE (8*1024*1024)
 
-static void dump_instr(unsigned long pc, int user)
+static void dump_instr(struct pt_regs *regs)
 {
-       int pmin = -2, pmax = 3, ok = 0;
-       extern char start_kernel, _etext;
-
-       if (!user) {
-               unsigned long module_start, module_end;
-               unsigned long kernel_start, kernel_end;
-
-               module_start = VMALLOC_START;
-               module_end   = module_start + MODULE_RANGE;
-
-               kernel_start = (unsigned long)&start_kernel;
-               kernel_end   = (unsigned long)&_etext;
-
-               if (pc >= kernel_start && pc < kernel_end) {
-                       if (pc + pmin < kernel_start)
-                               pmin = kernel_start - pc;
-                       if (pc + pmax > kernel_end)
-                               pmax = kernel_end - pc;
-                       ok = 1;
-               } else if (pc >= module_start && pc < module_end) {
-                       if (pc + pmin < module_start)
-                               pmin = module_start - pc;
-                       if (pc + pmax > module_end)
-                               pmax = module_end - pc;
-                       ok = 1;
+       unsigned long addr = instruction_pointer(regs);
+       const int thumb = thumb_mode(regs);
+       const int width = thumb ? 4 : 8;
+       int i;
+
+       printk("Code: ");
+       for (i = -2; i < 3; i++) {
+               unsigned int val, bad;
+
+               if (thumb)
+                       bad = __get_user(val, &((u16 *)addr)[i]);
+               else
+                       bad = __get_user(val, &((u32 *)addr)[i]);
+
+               if (!bad)
+                       printk(i == 0 ? "(%0*x) " : "%0*x", width, val);
+               else {
+                       printk("bad PC value.");
+                       break;
                }
-       } else
-               ok = verify_area(VERIFY_READ, (void *)(pc + pmin), pmax - pmin) == 0;
-
-       printk ("Code: ");
-       if (ok) {
-               int i;
-               for (i = pmin; i < pmax; i++)
-                       printk(i == 0 ? "(%08lx) " : "%08lx ", ((unsigned long *)pc)[i]);
-               printk ("\n");
-       } else
-               printk ("pc not in code space\n");
+       }
+       printk("\n");
+}
+
+static void dump_stack(struct task_struct *tsk, unsigned long sp)
+{
+       printk("Stack:\n");
+       dump_mem(sp - 16, 8192+(unsigned long)tsk);
+}
+
+static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
+{
+       unsigned int fp;
+       int ok = 1;
+
+       printk("Backtrace: ");
+       fp = regs->ARM_fp;
+       if (!fp) {
+               printk("no frame pointer");
+               ok = 0;
+       } else if (verify_stack(fp)) {
+               printk("invalid frame pointer %08lx", fp);
+               ok = 0;
+       } else if (fp < 4096+(unsigned long)tsk)
+               printk("frame pointer underflow");
+       printk("\n");
+
+       if (ok)
+               c_backtrace(fp, processor_mode(regs));
 }
 
 spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
@@ -141,9 +158,9 @@ void die(const char *str, struct pt_regs *regs, int err)
 {
        struct task_struct *tsk = current;
 
+       console_verbose();
        spin_lock_irq(&die_lock);
 
-       console_verbose();
        printk("Internal error: %s: %x\n", str, err);
        printk("CPU: %d\n", smp_processor_id());
        show_regs(regs);
@@ -151,39 +168,22 @@ void die(const char *str, struct pt_regs *regs, int err)
                current->comm, current->pid, 4096+(unsigned long)tsk);
 
        if (!user_mode(regs)) {
-               unsigned long sp = (unsigned long)(regs + 1);
-               unsigned long fp;
-               int dump_info = 1;
-
-               printk("Stack: ");
-               if (verify_stack(sp)) {
-                       printk("invalid kernel stack pointer %08lx", sp);
-                       dump_info = 0;
-               } else if (sp < 4096+(unsigned long)tsk)
-                       printk("kernel stack pointer underflow");
-               printk("\n");
-
-               if (dump_info)
-                       dump_mem(sp - 16, 8192+(unsigned long)tsk);
-
-               dump_info = 1;
-
-               printk("Backtrace: ");
-               fp = regs->ARM_fp;
-               if (!fp) {
-                       printk("no frame pointer");
-                       dump_info = 0;
-               } else if (verify_stack(fp)) {
-                       printk("invalid frame pointer %08lx", fp);
-                       dump_info = 0;
-               } else if (fp < 4096+(unsigned long)tsk)
-                       printk("frame pointer underflow");
-               printk("\n");
-
-               if (dump_info)
-                       c_backtrace(fp, processor_mode(regs));
-
-               dump_instr(instruction_pointer(regs), 0);
+               mm_segment_t fs;
+
+               /*
+                * We need to switch to kernel mode so that we can
+                * use __get_user to safely read from kernel space.
+                * Note that we now dump the code first, just in case
+                * the backtrace kills us.
+                */
+               fs = get_fs();
+               set_fs(KERNEL_DS);
+
+               dump_instr(regs);
+               dump_stack(tsk, (unsigned long)(regs + 1));
+               dump_backtrace(regs, tsk);
+
+               set_fs(fs);
        }
 
        spin_unlock_irq(&die_lock);
@@ -206,6 +206,7 @@ asmlinkage void do_undefinstr(int address, struct pt_regs *regs, int mode)
 #ifdef CONFIG_DEBUG_USER
        printk(KERN_INFO "%s (%d): undefined instruction: pc=%08lx\n",
                current->comm, current->pid, addr);
+       dump_instr(regs);
 #endif
 
        current->thread.error_code = 0;
@@ -228,6 +229,7 @@ asmlinkage void do_excpt(int address, struct pt_regs *regs, int mode)
 #ifdef CONFIG_DEBUG_USER
        printk(KERN_INFO "%s (%d): address exception: pc=%08lx\n",
                current->comm, current->pid, instruction_pointer(regs));
+       dump_instr(regs);
 #endif
 
        current->thread.error_code = 0;
@@ -275,7 +277,7 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, int proc_mode)
 
        die("Oops", regs, 0);
        cli();
-       while(1);
+       panic("bad mode");
 }
 
 /*
@@ -332,6 +334,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
                 * something catastrophic has happened
                 */
                printk("[%d] %s: arm syscall %d\n", current->pid, current->comm, no);
+               dump_instr(regs);
                if (user_mode(regs)) {
                        show_regs(regs);
                        c_backtrace(regs->ARM_fp, processor_mode(regs));
@@ -359,8 +362,9 @@ asmlinkage void deferred(int n, struct pt_regs *regs)
        }
 
 #ifdef CONFIG_DEBUG_USER
-       printk(KERN_ERR "[%d] %s: obsolete system call %08x.\n", current->pid, 
-              current->comm, n);
+       printk(KERN_ERR "[%d] %s: obsolete system call %08x.\n",
+               current->pid, current->comm, n);
+       dump_instr(regs);
 #endif
        force_sig(SIGILL, current);
        die_if_kernel("Oops", regs, n);
@@ -384,21 +388,10 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
        siginfo_t info;
 
 #ifdef CONFIG_DEBUG_USER
-       dump_instr(addr, 1);
-       {
-               pgd_t *pgd;
-
-               pgd = pgd_offset(current->mm, addr);
-               printk ("*pgd = %08lx", pgd_val (*pgd));
-               if (!pgd_none (*pgd)) {
-                       pmd_t *pmd;
-                       pmd = pmd_offset (pgd, addr);
-                       printk (", *pmd = %08lx", pmd_val (*pmd));
-                       if (!pmd_none (*pmd))
-                               printk (", *pte = %08lx", pte_val(*pte_offset (pmd, addr)));
-               }
-               printk ("\n");
-       }
+       printk(KERN_ERR "[%d] %s: bad data abort: code %d instr 0x%08lx\n",
+               current->pid, current->comm, code, instr);
+       dump_instr(regs);
+       show_pte(current->mm, addr);
 #endif
 
        info.si_signo = SIGILL;
index 42a2bb448a04d59181bd636e38ea18978d9c1d70..ab97b6e80f35a1e21e4948921bf3e1e7812e1e33 100644 (file)
@@ -76,7 +76,7 @@ static struct pci_ops via82c505_ops = {
 
 #ifdef CONFIG_ARCH_SHARK
 
-static char size_wanted = 0;
+static char size_wanted;
 
 static int
 dummy_read_config_byte(struct pci_dev *dev, int where, u8 *value)
index b7e29ca55dba867d279095f371dd45ae28bb0d34..fa7f10117dd3d0afd781a58f3d7e7f0986091bfd 100644 (file)
@@ -13,19 +13,35 @@ L_OBJS   := changebit.o csumipv6.o csumpartial.o csumpartialcopy.o \
            strncpy_from_user.o strnlen_user.o strchr.o strrchr.o  \
            testchangebit.o testclearbit.o testsetbit.o uaccess.o
 
+l-obj-y        :=
+l-obj-n        :=
+
 O_TARGET := lib.o
 O_OBJS   := backtrace.o delay.o
 
-L_OBJS_arc             := io-acorn.o floppydma.o
-L_OBJS_rpc             := io-acorn.o floppydma.o
+ifeq ($(CONFIG_ARCH_ACORN),y)
+  half := n
+  full := y
+else
+  half := y
+  full := n
+endif
+
+L_OBJS_arc             := ecard.o io-acorn.o floppydma.o
+L_OBJS_rpc             := ecard.o io-acorn.o floppydma.o
 L_OBJS_clps7500                := io-acorn.o
-L_OBJS_ebsa110         := io-ebsa110.o
-L_OBJS_footbridge      := io-footbridge.o
+L_OBJS_footbridge      := io-pcio.o
 L_OBJS_l7200           := io-acorn.o
-L_OBJS_nexuspci                := io-footbridge.o
-L_OBJS_sa1100          := io-footbridge.o
+L_OBJS_nexuspci                := io-pcio.o
+L_OBJS_sa1100          := io-pcio.o
 L_OBJS_shark           := io-shark.o
-L_OBJS_integrator      := io-shark.o
+L_OBJS_integrator      := io-pcio.o
+L_OBJS_clps711x                := io-shark.o
+
+l-obj-y                        += io-readsb.o io-writesb.o
+l-obj-$(full)          += io-readsw-armv3.o io-writesw-armv3.o
+l-obj-$(half)          += io-readsw-armv4.o io-writesw-armv4.o
+l-obj-y                        += io-readsl.o io-writesl.o
 
 ifeq ($(PROCESSOR),armo)
   L_OBJS += uaccess-armo.o
@@ -35,7 +51,7 @@ ifneq ($(MACHINE),ebsa110)
   OX_OBJS += io.o
 endif
 
-L_OBJS += $(L_OBJS_$(MACHINE))
+L_OBJS += $(L_OBJS_$(MACHINE)) $(l-obj-y)
 
 include $(TOPDIR)/Rules.make
 
diff --git a/arch/arm/lib/ecard.S b/arch/arm/lib/ecard.S
new file mode 100644 (file)
index 0000000..9b0452d
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ *  linux/arch/arm/lib/ecard.S
+ *
+ *  Copyright (C) 1995, 1996 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/config.h> /* for CONFIG_CPU_nn */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+#if defined(CONFIG_CPU_26)
+#define CPSR2SPSR(rt)
+#else
+#define CPSR2SPSR(rt) \
+               mrs     rt, cpsr; \
+               msr     spsr, rt
+#endif
+
+@ Purpose: call an expansion card loader to read bytes.
+@ Proto  : char read_loader(int offset, char *card_base, char *loader);
+@ Returns: byte read
+
+ENTRY(ecard_loader_read)
+               stmfd   sp!, {r4 - r12, lr}
+               mov     r11, r1
+               mov     r1, r0
+               CPSR2SPSR(r0)
+               mov     lr, pc
+               mov     pc, r2
+               LOADREGS(fd, sp!, {r4 - r12, pc})
+
+@ Purpose: call an expansion card loader to reset the card
+@ Proto  : void read_loader(int card_base, char *loader);
+@ Returns: byte read
+
+ENTRY(ecard_loader_reset)
+               stmfd   sp!, {r4 - r12, lr}
+               mov     r11, r0
+               CPSR2SPSR(r0)
+               mov     lr, pc
+               add     pc, r1, #8
+               LOADREGS(fd, sp!, {r4 - r12, pc})
+
index bc40496acb1784ddea53fc017841b8faa8b22cd9..a40272fdbd478d92fc299aa5d990166892ec4678 100644 (file)
@@ -40,8 +40,6 @@
                addeq   \rd, \rd, #diff_pcio_base
                .endm
 
-.iosw_bad_align_msg:
-               .ascii  "insw: bad buffer alignment (%p), called from %08lX\n\0"
 .iosl_warning:
                .ascii  "<4>insl/outsl not implemented, called from %08lX\0"
                .align
@@ -56,422 +54,38 @@ ENTRY(outsl)
                mov     r1, lr
                b       SYMBOL_NAME(printk)
 
-.iosw_bad_alignment:
-               adr     r0, .iosw_bad_align_msg
-               mov     r2, lr
-               b       SYMBOL_NAME(panic)
-
-
 /* Purpose: read a block of data from a hardware register to memory.
  * Proto  : void insw(int from_port, void *to, int len_in_words);
  * Notes  : increment to, 'to' must be 16-bit aligned
  */
 
-.insw_align:   tst     r1, #1
-               bne     .iosw_bad_alignment
-
-               ldr     r3, [r0]
-               strb    r3, [r1], #1
-               mov     r3, r3, lsr #8
-               strb    r3, [r1], #1
-
-               subs    r2, r2, #1
-               bne     .insw_aligned
-
 ENTRY(insw)
                teq     r2, #0
-               RETINSTR(moveq,pc,lr)
+               RETINSTR(moveq, pc, lr)
                addr    r0
-               tst     r1, #3
-               bne     .insw_align
-
-.insw_aligned: mov     ip, #0xff
-               orr     ip, ip, ip, lsl #8
-               stmfd   sp!, {r4, r5, r6, lr}
-
-               subs    r2, r2, #8
-               bmi     .no_insw_8
-
-.insw_8_lp:    ldr     r3, [r0]
-               and     r3, r3, ip
-               ldr     r4, [r0]
-               orr     r3, r3, r4, lsl #16
-
-               ldr     r4, [r0]
-               and     r4, r4, ip
-               ldr     r5, [r0]
-               orr     r4, r4, r5, lsl #16
-
-               ldr     r5, [r0]
-               and     r5, r5, ip
-               ldr     r6, [r0]
-               orr     r5, r5, r6, lsl #16
-
-               ldr     r6, [r0]
-               and     r6, r6, ip
-               ldr     lr, [r0]
-               orr     r6, r6, lr, lsl #16
-
-               stmia   r1!, {r3 - r6}
-               subs    r2, r2, #8
-               bpl     .insw_8_lp
-               tst     r2, #7
-               LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
+               b       __arch_readsw
 
-.no_insw_8:    tst     r2, #4
-               beq     .no_insw_4
-
-               ldr     r3, [r0]
-               and     r3, r3, ip
-               ldr     r4, [r0]
-               orr     r3, r3, r4, lsl #16
-
-               ldr     r4, [r0]
-               and     r4, r4, ip
-               ldr     r5, [r0]
-               orr     r4, r4, r5, lsl #16
-
-               stmia   r1!, {r3, r4}
-
-.no_insw_4:    tst     r2, #2
-               beq     .no_insw_2
-
-               ldr     r3, [r0]
-               and     r3, r3, ip
-               ldr     r4, [r0]
-               orr     r3, r3, r4, lsl #16
-
-               str     r3, [r1], #4
-
-.no_insw_2:    tst     r2, #1
-               ldrne   r3, [r0]
-               strneb  r3, [r1], #1
-               movne   r3, r3, lsr #8
-               strneb  r3, [r1]
-               LOADREGS(fd, sp!, {r4, r5, r6, pc})
+ENTRY(insb)
+               teq     r2, #0
+               RETINSTR(moveq, pc, lr)
+               addr    r0
+               b       __arch_readsb
 
 @ Purpose: write a block of data from memory to a hardware register.
 @ Proto  : outsw(int to_reg, void *from, int len_in_words);
 @ Notes  : increments from
 
-.outsw_align:  tst     r1, #1
-               bne     .iosw_bad_alignment
-
-               add     r1, r1, #2
-
-               ldr     r3, [r1, #-4]
-               mov     r3, r3, lsr #16
-               orr     r3, r3, r3, lsl #16
-               str     r3, [r0]
-               subs    r2, r2, #1
-               bne     .outsw_aligned
-
 ENTRY(outsw)
                teq     r2, #0
-               RETINSTR(moveq,pc,lr)
-               addr    r0
-               tst     r1, #3
-               bne     .outsw_align
-
-.outsw_aligned:        stmfd   sp!, {r4, r5, r6, lr}
-
-               subs    r2, r2, #8
-               bmi     .no_outsw_8
-.outsw_8_lp:   ldmia   r1!, {r3, r4, r5, r6}
-
-               mov     ip, r3, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r3, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-               mov     ip, r4, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r4, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-               mov     ip, r5, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r5, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-               mov     ip, r6, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r6, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-               subs    r2, r2, #8
-               bpl     .outsw_8_lp
-               tst     r2, #7
-               LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
-
-.no_outsw_8:   tst     r2, #4
-               beq     .no_outsw_4
-
-               ldmia   r1!, {r3, r4}
-
-               mov     ip, r3, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r3, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-               mov     ip, r4, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r4, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-.no_outsw_4:   tst     r2, #2
-               beq     .no_outsw_2
-
-               ldr     r3, [r1], #4
-
-               mov     ip, r3, lsl #16
-               orr     ip, ip, ip, lsr #16
-               str     ip, [r0]
-
-               mov     ip, r3, lsr #16
-               orr     ip, ip, ip, lsl #16
-               str     ip, [r0]
-
-.no_outsw_2:   tst     r2, #1
-
-               ldrne   r3, [r1]
-
-               movne   ip, r3, lsl #16
-               orrne   ip, ip, ip, lsr #16
-               strne   ip, [r0]
-
-               LOADREGS(fd, sp!, {r4, r5, r6, pc})
-
-.insb_align:   rsb     ip, ip, #4
-               cmp     ip, r2
-               movgt   ip, r2
-               cmp     ip, #2
-               ldrb    r3, [r0]
-               strb    r3, [r1], #1
-               ldrgeb  r3, [r0]
-               strgeb  r3, [r1], #1
-               ldrgtb  r3, [r0]
-               strgtb  r3, [r1], #1
-               subs    r2, r2, ip
-               bne     .insb_aligned
-
-ENTRY(insb)
-               teq     r2, #0
-               moveq   pc, lr
+               RETINSTR(moveq, pc, lr)
                addr    r0
-               ands    ip, r1, #3
-               bne     .insb_align
-
-.insb_aligned: stmfd   sp!, {r4 - r6, lr}
-
-               subs    r2, r2, #16
-               bmi     .insb_no_16
-
-.insb_16_lp:   ldrb    r3, [r0]
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #8
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #16
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #24
-               ldrb    r4, [r0]
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #8
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #16
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #24
-               ldrb    r5, [r0]
-               ldrb    r6, [r0]
-               orr     r5, r5, r6, lsl #8
-               ldrb    r6, [r0]
-               orr     r5, r5, r6, lsl #16
-               ldrb    r6, [r0]
-               orr     r5, r5, r6, lsl #24
-               ldrb    r6, [r0]
-               ldrb    ip, [r0]
-               orr     r6, r6, ip, lsl #8
-               ldrb    ip, [r0]
-               orr     r6, r6, ip, lsl #16
-               ldrb    ip, [r0]
-               orr     r6, r6, ip, lsl #24
-               stmia   r1!, {r3 - r6}
-               subs    r2, r2, #16
-               bpl     .insb_16_lp
-
-               tst     r2, #15
-               LOADREGS(eqfd, sp!, {r4 - r6, pc})
-
-.insb_no_16:   tst     r2, #8
-               beq     .insb_no_8
-
-               ldrb    r3, [r0]
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #8
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #16
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #24
-               ldrb    r4, [r0]
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #8
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #16
-               ldrb    r5, [r0]
-               orr     r4, r4, r5, lsl #24
-               stmia   r1!, {r3, r4}
-
-.insb_no_8:    tst     r2, #4
-               bne     .insb_no_4
-
-               ldrb    r3, [r0]
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #8
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #16
-               ldrb    r4, [r0]
-               orr     r3, r3, r4, lsl #24
-               str     r3, [r1], #4
-
-.insb_no_4:    ands    r2, r2, #3
-               LOADREGS(eqfd, sp!, {r4 - r6, pc})
-               cmp     r2, #2
-               ldrb    r3, [r0]
-               strb    r3, [r1], #1
-               ldrgeb  r3, [r0]
-               strgeb  r3, [r1], #1
-               ldrgtb  r3, [r0]
-               strgtb  r3, [r1]
-               LOADREGS(fd, sp!, {r4 - r6, pc})
-
-
-
-.outsb_align:  rsb     ip, ip, #4
-               cmp     ip, r2
-               mov     ip, r2
-               cmp     ip, #2
-               ldrb    r3, [r1], #1
-               strb    r3, [r0]
-               ldrgeb  r3, [r1], #1
-               strgeb  r3, [r0]
-               ldrgtb  r3, [r1], #1
-               strgtb  r3, [r0]
-               subs    r2, r2, ip
-               bne     .outsb_aligned
+               b       __arch_writesw
 
 ENTRY(outsb)
                teq     r2, #0
-               moveq   pc, lr
+               RETINSTR(moveq, pc, lr)
                addr    r0
-               ands    ip, r1, #3
-               bne     .outsb_align
-
-.outsb_aligned:        stmfd   sp!, {r4 - r6, lr}
-
-               subs    r2, r2, #16
-               bmi     .outsb_no_16
-
-.outsb_16_lp:  ldmia   r1!, {r3 - r6}
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-
-               strb    r5, [r0]
-               mov     r5, r5, lsr #8
-               strb    r5, [r0]
-               mov     r5, r5, lsr #8
-               strb    r5, [r0]
-               mov     r5, r5, lsr #8
-               strb    r5, [r0]
-
-               strb    r6, [r0]
-               mov     r6, r6, lsr #8
-               strb    r6, [r0]
-               mov     r6, r6, lsr #8
-               strb    r6, [r0]
-               mov     r6, r6, lsr #8
-               strb    r6, [r0]
-               subs    r2, r2, #16
-               bpl     .outsb_16_lp
-
-               tst     r2, #15
-               LOADREGS(eqfd, sp!, {r4 - r6, pc})
-
-.outsb_no_16:  tst     r2, #8
-               beq     .outsb_no_8
-
-               ldmia   r1, {r3, r4}
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-               mov     r4, r4, lsr #8
-               strb    r4, [r0]
-
-.outsb_no_8:   tst     r2, #4
-               bne     .outsb_no_4
-
-               ldr     r3, [r1], #4
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-               mov     r3, r3, lsr #8
-               strb    r3, [r0]
-
-.outsb_no_4:   ands    r2, r2, #3
-               LOADREGS(eqfd, sp!, {r4 - r6, pc})
-               cmp     r2, #2
-               ldrb    r3, [r1], #1
-               strb    r3, [r0]
-               ldrgeb  r3, [r1], #1
-               strgeb  r3, [r0]
-               ldrgtb  r3, [r1]
-               strgtb  r3, [r0]
-               LOADREGS(fd, sp!, {r4 - r6, pc})
-
-
-
+               b       __arch_writesb
 
 @ Purpose: write a memc register
 @ Proto  : void memc_write(int register, int value);
@@ -488,146 +102,5 @@ ENTRY(memc_write)
                add     r0, r0, #0x03600000
                strb    r0, [r0]
                RETINSTR(mov,pc,lr)
-#define CPSR2SPSR(rt)
-#else
-#define CPSR2SPSR(rt) \
-               mrs     rt, cpsr; \
-               msr     spsr, rt
-#endif
-
-@ Purpose: call an expansion card loader to read bytes.
-@ Proto  : char read_loader(int offset, char *card_base, char *loader);
-@ Returns: byte read
-
-ENTRY(ecard_loader_read)
-               stmfd   sp!, {r4 - r12, lr}
-               mov     r11, r1
-               mov     r1, r0
-               CPSR2SPSR(r0)
-               mov     lr, pc
-               mov     pc, r2
-               LOADREGS(fd, sp!, {r4 - r12, pc})
-
-@ Purpose: call an expansion card loader to reset the card
-@ Proto  : void read_loader(int card_base, char *loader);
-@ Returns: byte read
-
-ENTRY(ecard_loader_reset)
-               stmfd   sp!, {r4 - r12, lr}
-               mov     r11, r0
-               CPSR2SPSR(r0)
-               mov     lr, pc
-               add     pc, r1, #8
-               LOADREGS(fd, sp!, {r4 - r12, pc})
-
-
-#if 0
-               mov     r2, r2, lsl#1
-               mov     ip, sp
-               stmfd   sp!, {r4 - r10, fp, ip, lr, pc}
-               sub     fp, ip, #4
-               addr    r3, r0
-               add     r0, r3, r0, lsl #2
-               tst     r1, #3
-               beq     Linswok
-               tst     r1, #1
-               bne     Linsw_notaligned
-               cmp     r2, #1
-               ldrge   r4, [r0]
-               strgeb  r4, [r1], #1
-               movgt   r4, r4, LSR#8
-               strgtb  r4, [r1], #1
-               LOADREGS(leea, fp, {r4 - r10, fp, sp, pc})
-               sub     r2, r2, #2
-Linswok:       mov     ip, #0xFF
-               orr     ip, ip, ip, lsl #8
-Linswlp:       subs    r2, r2, #64
-               bmi     Linsw_toosmall
-               IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               bne     Linswlp
-               LOADREGS(ea, fp, {r4 - r10, fp, sp, pc})
-Linsw_toosmall:
-               adds    r2, r2, #32
-               bmi     Linsw_toosmall2
-Linsw2lp:      IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               LOADREGS(eqea, fp, {r4 - r10, fp, sp, pc})
-               b       Linsw_notaligned
-Linsw_toosmall2:
-               add     r2, r2, #32
-Linsw_notaligned:
-               cmp     r2, #1
-               LOADREGS(ltea, fp, {r4 - r10, fp, sp, pc})
-               ldr     r4, [r0]
-               strb    r4, [r1], #1
-               movgt   r4, r4, LSR#8
-               strgtb  r4, [r1], #1
-               subs    r2, r2, #2
-               bgt     Linsw_notaligned
-               LOADREGS(ea, fp, {r4 - r10, fp, sp, pc})
-
-
-ENTRY(outsw)
-               mov     r2, r2, lsl#1
-               mov     ip, sp
-               stmfd   sp!, {r4 - r8, fp, ip, lr, pc}
-               sub     fp, ip, #4
-               addr    r3, r0
-               tst     r1, #2
-               beq     1f
-               ldr     r4, [r1], #2
-               mov     r4, r4, lsl #16
-               orr     r4, r4, r4, lsr #16
-               str     r4, [r3, r0, lsl #2]
-               subs    r2, r2, #2
-               LOADREGS(eqea, fp, {r4 - r8, fp, sp, pc})
-1:             subs    r2, r2, #32
-               blt     2f
-               ldmia   r1!, {r4, r5, r6, r7}
-               OUT(r4)
-               OUT(r5)
-               OUT(r6)
-               OUT(r7)
-               ldmia   r1!, {r4, r5, r6, r7}
-               OUT(r4)
-               OUT(r5)
-               OUT(r6)
-               OUT(r7)
-               bne     1b
-               LOADREGS(ea, fp, {r4 - r8, fp, sp, pc})
-2:             adds    r2, r2, #32
-               LOADREGS(eqea, fp, {r4 - r8, fp, sp, pc})
-3:             ldr     r4, [r1],#2
-               mov     r4, r4, lsl#16
-               orr     r4, r4, r4, lsr#16
-               str     r4, [r3, r0, lsl#2]
-               subs    r2, r2, #2
-               bgt     3b
-               LOADREGS(ea, fp, {r4 - r8, fp, sp, pc})
-
 #endif
 
diff --git a/arch/arm/lib/io-ebsa110.S b/arch/arm/lib/io-ebsa110.S
deleted file mode 100644 (file)
index b1c5078..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- *  linux/arch/arm/lib/io-ebsa.S
- *
- *  Copyright (C) 1995, 1996 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <linux/linkage.h>
-#include <asm/assembler.h>
-               .text
-               .align
-
-#define OUT(reg)                                       \
-               mov     r8, reg, lsl $16                ;\
-               orr     r8, r8, r8, lsr $16             ;\
-               str     r8, [r3, r0, lsl $2]            ;\
-               mov     r8, reg, lsr $16                ;\
-               orr     r8, r8, r8, lsl $16             ;\
-               str     r8, [r3, r0, lsl $2]
-
-#define IN(reg)                                                \
-               ldr     reg, [r0]                       ;\
-               and     reg, reg, ip                    ;\
-               ldr     lr, [r0]                        ;\
-               orr     reg, reg, lr, lsl $16
-
-/*
- * These make no sense on these machines.
- * Print a warning message.
- */
-ENTRY(insl)
-ENTRY(outsl)
-ENTRY(insb)
-ENTRY(outsb)
-               adr     r0, io_long_warning
-               mov     r1, lr
-               b       SYMBOL_NAME(printk)
-
-io_long_warning:
-               .ascii  "<4>ins?/outs? not implemented on this architecture\0"
-               .align
-
-@ Purpose: read a block of data from a hardware register to memory.
-@ Proto  : insw(int from_port, void *to, int len_in_words);
-@ Proto  : inswb(int from_port, void *to, int len_in_bytes);
-@ Notes  : increment to
-
-ENTRY(insw)
-               mov     r2, r2, lsl#1
-ENTRY(inswb)
-               mov     ip, sp
-               stmfd   sp!, {r4 - r10 ,fp ,ip ,lr ,pc}
-               sub     fp, ip, #4
-               cmp     r0, #0x00c00000
-               movge   r3, #0
-               movlt   r3, #0xf0000000
-               add     r0, r3, r0, lsl #2
-               tst     r1, #3
-               beq     Linswok
-               tst     r1, #1
-               bne     Linsw_notaligned
-               cmp     r2, #1
-               ldrge   r4, [r0]
-               strgeb  r4, [r1], #1
-               movgt   r4, r4, LSR#8
-               strgtb  r4, [r1], #1
-               ldmleea fp, {r4 - r10, fp, sp, pc}^
-               sub     r2, r2, #2
-Linswok:       mov     ip, #0xFF
-               orr     ip, ip, ip, lsl #8
-Linswlp:       subs    r2, r2, #64
-               bmi     Linsw_toosmall
-               IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               bne     Linswlp
-               LOADREGS(ea, fp, {r4 - r10, fp, sp, pc})
-Linsw_toosmall:
-               add     r2, r2, #32
-               bmi     Linsw_toosmall2
-Linsw2lp:      IN(r3)
-               IN(r4)
-               IN(r5)
-               IN(r6)
-               IN(r7)
-               IN(r8)
-               IN(r9)
-               IN(r10)
-               stmia   r1!, {r3 - r10}
-               LOADREGS(eqea, fp, {r4 - r10, fp, sp, pc})
-               b       Linsw_notaligned
-Linsw_toosmall2:
-               add     r2, r2, #32
-Linsw_notaligned:
-               cmp     r2, #1
-               LOADREGS(ltea, fp, {r4 - r10, fp, sp, pc})
-               ldr     r4, [r0]
-               strb    r4, [r1], #1
-               movgt   r4, r4, LSR#8
-               strgtb  r4, [r1], #1
-               subs    r2, r2, #2
-               bgt     Linsw_notaligned
-               LOADREGS(ea, fp, {r4 - r10, fp, sp, pc})
-
-@ Purpose: write a block of data from memory to a hardware register.
-@ Proto  : outsw(int to_reg, void *from, int len_in_words);
-@ Proto  : outswb(int to_reg, void *from, int len_in_bytes);
-@ Notes  : increments from
-
-ENTRY(outsw)
-               mov     r2, r2, LSL#1
-ENTRY(outswb)
-               mov     ip, sp
-               stmfd   sp!, {r4 - r8, fp, ip, lr, pc}
-               sub     fp, ip, #4
-               cmp     r0, #0x00c00000
-               movge   r3, #0
-               movlt   r3, #0xf0000000
-               tst     r1, #2
-               beq     Loutsw32lp
-               ldr     r4, [r1], #2
-               mov     r4, r4, lsl #16
-               orr     r4, r4, r4, lsr #16
-               str     r4, [r3, r0, lsl #2]
-               sub     r2, r2, #2
-               teq     r2, #0
-               LOADREGS(eqea, fp, {r4 - r8, fp, sp, pc})
-Loutsw32lp:    subs    r2,r2,#32
-               blt     Loutsw_toosmall
-               ldmia   r1!,{r4,r5,r6,r7}
-               OUT(r4)
-               OUT(r5)
-               OUT(r6)
-               OUT(r7)
-               ldmia   r1!,{r4,r5,r6,r7}
-               OUT(r4)
-               OUT(r5)
-               OUT(r6)
-               OUT(r7)
-               LOADREGS(eqea, fp, {r4 - r8, fp, sp, pc})
-               b       Loutsw32lp
-Loutsw_toosmall:
-               adds    r2,r2,#32
-               LOADREGS(eqea, fp, {r4 - r8, fp, sp, pc})
-Llpx:          ldr     r4,[r1],#2
-               mov     r4,r4,LSL#16
-               orr     r4,r4,r4,LSR#16
-               str     r4,[r3,r0,LSL#2]
-               subs    r2,r2,#2
-               bgt     Llpx
-               LOADREGS(ea, fp, {r4 - r8, fp, sp, pc})
-
diff --git a/arch/arm/lib/io-footbridge.S b/arch/arm/lib/io-footbridge.S
deleted file mode 100644 (file)
index 98f7512..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-#include <linux/linkage.h>
-#include <asm/hardware.h>
-
-               .equ    pcio_high, PCIO_BASE & 0xff000000
-               .equ    pcio_low,  PCIO_BASE & 0x00ffffff
-
-               .macro  ioaddr, rd,rn
-               add     \rd, \rn, #pcio_high
-               .if     pcio_low
-               add     \rd, \rd, #pcio_low
-               .endif
-               .endm
-
-ENTRY(insl)
-               ioaddr  r0, r0
-               ands    ip, r1, #3
-               bne     2f
-
-1:             ldr     r3, [r0]
-               str     r3, [r1], #4
-               subs    r2, r2, #1
-               bne     1b
-               mov     pc, lr
-
-2:             cmp     ip, #2
-               ldr     ip, [r0]
-               blt     4f
-               bgt     6f
-
-               strh    ip, [r1], #2
-               mov     ip, ip, lsr #16
-3:             subs    r2, r2, #1
-               ldrne   r3, [r0]
-               orrne   ip, ip, r3, lsl #16
-               strne   ip, [r1], #4
-               movne   ip, r3, lsr #16
-               bne     3b
-               strh    ip, [r1], #2
-               mov     pc, lr
-
-4:             strb    ip, [r1], #1
-               mov     ip, ip, lsr #8
-               strh    ip, [r1], #2
-               mov     ip, ip, lsr #16
-5:             subs    r2, r2, #1
-               ldrne   r3, [r0]
-               orrne   ip, ip, r3, lsl #8
-               strne   ip, [r1], #4
-               movne   ip, r3, lsr #24
-               bne     5b
-               strb    ip, [r1], #1
-               mov     pc, lr
-
-6:             strb    ip, [r1], #1
-               mov     ip, ip, lsr #8
-7:             subs    r2, r2, #1
-               ldrne   r3, [r0]
-               orrne   ip, ip, r3, lsl #24
-               strne   ip, [r1], #4
-               movne   ip, r3, lsr #8
-               bne     7b
-               strb    ip, [r1], #1
-               mov     ip, ip, lsr #8
-               strh    ip, [r1], #2
-               mov     pc, lr
-
-ENTRY(outsl)
-               ioaddr  r0, r0
-               ands    ip, r1, #3
-               bne     2f
-
-1:             ldr     r3, [r1], #4
-               str     r3, [r0]
-               subs    r2, r2, #1
-               bne     1b
-               mov     pc, lr
-
-2:             bic     r1, r1, #3
-               cmp     ip, #2
-               ldr     ip, [r1], #4
-               mov     ip, ip, lsr #16
-               blt     4f
-               bgt     5f
-
-3:             ldr     r3, [r1], #4
-               orr     ip, ip, r3, lsl #16
-               str     ip, [r0]
-               mov     ip, r3, lsr #16
-               subs    r2, r2, #1
-               bne     3b
-               mov     pc, lr
-
-4:             ldr     r3, [r1], #4
-               orr     ip, ip, r3, lsl #8
-               str     ip, [r0]
-               mov     ip, r3, lsr #24
-               subs    r2, r2, #1
-               bne     4b
-               mov     pc, lr
-
-5:             ldr     r3, [r1], #4
-               orr     ip, ip, r3, lsl #24
-               str     ip, [r0]
-               mov     ip, r3, lsr #8
-               subs    r2, r2, #1
-               bne     5b
-               mov     pc, lr
-
-               /* Nobody could say these are optimal, but not to worry. */
-
-ENTRY(outswb)
-               mov     r2, r2, lsr #1
-ENTRY(outsw)
-               ioaddr  r0, r0
-1:             subs    r2, r2, #1
-               ldrgeh  r3, [r1], #2
-               strgeh  r3, [r0]
-               bgt     1b
-               mov     pc, lr
-
-ENTRY(inswb)
-               mov     r2, r2, lsr #1
-ENTRY(insw)
-               stmfd   sp!, {r4, r5, lr}
-               ioaddr  r0, r0
-                                               @ + 8 + 9 +10 +11 +12 +13 +14 +15 +16 +17
-               subs    ip, r2, #8
-               blo     too_little
-                                               @ + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
-               ands    lr, r1, #3              @ check alignment
-               beq     1f
-
-               ldrh    r3, [r0]
-               strh    r3, [r1], #2
-               sub     ip, ip, #1
-               cmn     ip, #8
-               blo     too_little
-
-1:             ldrh    r2, [r0]
-               ldrh    r3, [r0]
-               orr     r2, r2, r3, lsl #16
-               ldrh    r3, [r0]
-               ldrh    r4, [r0]
-               orr     r3, r3, r4, lsl #16
-               ldrh    r4, [r0]
-               ldrh    r5, [r0]
-               orr     r4, r4, r5, lsl #16
-               ldrh    r5, [r0]
-               ldrh    lr, [r0]
-               orr     r5, r5, lr, lsl #16
-               stmia   r1!, {r2, r3, r4, r5}
-               subs    ip, ip, #8
-                                               @ - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 + 0 + 1
-               bhs     1b
-                                               @ - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 8 - 7
-               cmn     ip, #4
-               ldrhsh  r2, [r0]                @ ... ... ... ... - 4 - 3 - 2 - 1 ... ...
-               ldrhsh  r3, [r0]
-               orrhs   r2, r2, r3, lsl #16
-               ldrhsh  r3, [r0]
-               ldrhsh  r4, [r0]
-               orrhs   r3, r3, r4, lsl #16
-               stmhsia r1!, {r2, r3}
-
-               tst     ip, #2
-               ldrneh  r2, [r0]                @ ... ... - 6 - 5 ... ... - 2 - 1 ... ...
-               ldrneh  r3, [r0]
-               orrne   r2, r2, r3, lsl #16
-               strne   r2, [r1], #4
-
-               tst     ip, #1
-               ldrneh  r2, [r0]
-               strneh  r2, [r1], #2
-
-               ldmfd   sp!, {r4, r5, pc}
-
-too_little:    subs    r2, r2, #1
-               ldrgeh  r3, [r0]
-               strgeh  r3, [r1], #2
-               bgt     too_little
-
-               ldmfd   sp!, {r4, r5, pc}
-
-
-ENTRY(insb)
-               ioaddr  r0, r0
-1:             teq     r2, #0
-               ldrneb  r3, [r0]
-               strneb  r3, [r1], #1
-               subne   r2, r2, #1
-               bne     1b
-               mov     pc, lr
-
-
-ENTRY(outsb)
-               ioaddr  r0, r0
-1:             teq     r2, #0
-               ldrneb  r3, [r1], #1
-               strneb  r3, [r0]
-               subne   r2, r2, #1
-               bne     1b
-               mov     pc, lr
diff --git a/arch/arm/lib/io-pcio.S b/arch/arm/lib/io-pcio.S
new file mode 100644 (file)
index 0000000..f57abfc
--- /dev/null
@@ -0,0 +1,38 @@
+#include <linux/linkage.h>
+#include <asm/hardware.h>
+
+               .equ    pcio_high, PCIO_BASE & 0xff000000
+               .equ    pcio_low,  PCIO_BASE & 0x00ffffff
+
+               .macro  ioaddr, rd,rn
+               add     \rd, \rn, #pcio_high
+               .if     pcio_low
+               add     \rd, \rd, #pcio_low
+               .endif
+               .endm
+
+ENTRY(insl)
+               ioaddr  r0, r0
+               b       __arch_readsl
+
+ENTRY(outsl)
+               ioaddr  r0, r0
+               b       __arch_writesl
+
+               /* Nobody could say these are optimal, but not to worry. */
+
+ENTRY(outsw)
+               ioaddr  r0, r0
+               b       __arch_writesw
+
+ENTRY(insw)
+               ioaddr  r0, r0
+               b       __arch_readsw
+
+ENTRY(insb)
+               ioaddr  r0, r0
+               b       __arch_readsb
+
+ENTRY(outsb)
+               ioaddr  r0, r0
+               b       __arch_writesb
diff --git a/arch/arm/lib/io-readsb.S b/arch/arm/lib/io-readsb.S
new file mode 100644 (file)
index 0000000..23cca89
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.insb_align:   rsb     ip, ip, #4
+               cmp     ip, r2
+               movgt   ip, r2
+               cmp     ip, #2
+               ldrb    r3, [r0]
+               strb    r3, [r1], #1
+               ldrgeb  r3, [r0]
+               strgeb  r3, [r1], #1
+               ldrgtb  r3, [r0]
+               strgtb  r3, [r1], #1
+               subs    r2, r2, ip
+               bne     .insb_aligned
+
+ENTRY(__arch_readsb)
+               ands    ip, r1, #3
+               bne     .insb_align
+
+.insb_aligned: stmfd   sp!, {r4 - r6, lr}
+
+               subs    r2, r2, #16
+               bmi     .insb_no_16
+
+.insb_16_lp:   ldrb    r3, [r0]
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #8
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #16
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #24
+               ldrb    r4, [r0]
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #8
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #16
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #24
+               ldrb    r5, [r0]
+               ldrb    r6, [r0]
+               orr     r5, r5, r6, lsl #8
+               ldrb    r6, [r0]
+               orr     r5, r5, r6, lsl #16
+               ldrb    r6, [r0]
+               orr     r5, r5, r6, lsl #24
+               ldrb    r6, [r0]
+               ldrb    ip, [r0]
+               orr     r6, r6, ip, lsl #8
+               ldrb    ip, [r0]
+               orr     r6, r6, ip, lsl #16
+               ldrb    ip, [r0]
+               orr     r6, r6, ip, lsl #24
+               stmia   r1!, {r3 - r6}
+               subs    r2, r2, #16
+               bpl     .insb_16_lp
+
+               tst     r2, #15
+               LOADREGS(eqfd, sp!, {r4 - r6, pc})
+
+.insb_no_16:   tst     r2, #8
+               beq     .insb_no_8
+
+               ldrb    r3, [r0]
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #8
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #16
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #24
+               ldrb    r4, [r0]
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #8
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #16
+               ldrb    r5, [r0]
+               orr     r4, r4, r5, lsl #24
+               stmia   r1!, {r3, r4}
+
+.insb_no_8:    tst     r2, #4
+               bne     .insb_no_4
+
+               ldrb    r3, [r0]
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #8
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #16
+               ldrb    r4, [r0]
+               orr     r3, r3, r4, lsl #24
+               str     r3, [r1], #4
+
+.insb_no_4:    ands    r2, r2, #3
+               LOADREGS(eqfd, sp!, {r4 - r6, pc})
+               cmp     r2, #2
+               ldrb    r3, [r0]
+               strb    r3, [r1], #1
+               ldrgeb  r3, [r0]
+               strgeb  r3, [r1], #1
+               ldrgtb  r3, [r0]
+               strgtb  r3, [r1]
+               LOADREGS(fd, sp!, {r4 - r6, pc})
diff --git a/arch/arm/lib/io-readsl.S b/arch/arm/lib/io-readsl.S
new file mode 100644 (file)
index 0000000..5301754
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+ENTRY(__arch_readsl)
+               ands    ip, r1, #3
+               bne     2f
+
+1:             ldr     r3, [r0]
+               str     r3, [r1], #4
+               subs    r2, r2, #1
+               bne     1b
+               mov     pc, lr
+
+2:             cmp     ip, #2
+               ldr     ip, [r0]
+               blt     4f
+               bgt     6f
+
+               strh    ip, [r1], #2
+               mov     ip, ip, lsr #16
+3:             subs    r2, r2, #1
+               ldrne   r3, [r0]
+               orrne   ip, ip, r3, lsl #16
+               strne   ip, [r1], #4
+               movne   ip, r3, lsr #16
+               bne     3b
+               strh    ip, [r1], #2
+               mov     pc, lr
+
+4:             strb    ip, [r1], #1
+               mov     ip, ip, lsr #8
+               strh    ip, [r1], #2
+               mov     ip, ip, lsr #16
+5:             subs    r2, r2, #1
+               ldrne   r3, [r0]
+               orrne   ip, ip, r3, lsl #8
+               strne   ip, [r1], #4
+               movne   ip, r3, lsr #24
+               bne     5b
+               strb    ip, [r1], #1
+               mov     pc, lr
+
+6:             strb    ip, [r1], #1
+               mov     ip, ip, lsr #8
+7:             subs    r2, r2, #1
+               ldrne   r3, [r0]
+               orrne   ip, ip, r3, lsl #24
+               strne   ip, [r1], #4
+               movne   ip, r3, lsr #8
+               bne     7b
+               strb    ip, [r1], #1
+               mov     ip, ip, lsr #8
+               strh    ip, [r1], #2
+               mov     pc, lr
+
diff --git a/arch/arm/lib/io-readsw-armv3.S b/arch/arm/lib/io-readsw-armv3.S
new file mode 100644 (file)
index 0000000..65fb94e
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.insw_bad_alignment:
+               adr     r0, .insw_bad_align_msg
+               mov     r2, lr
+               b       SYMBOL_NAME(panic)
+.insw_bad_align_msg:
+               .asciz  "insw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
+               .align
+
+.insw_align:   tst     r1, #1
+               bne     .insw_bad_alignment
+
+               ldr     r3, [r0]
+               strb    r3, [r1], #1
+               mov     r3, r3, lsr #8
+               strb    r3, [r1], #1
+
+               subs    r2, r2, #1
+               RETINSTR(moveq, pc, lr)
+
+ENTRY(__arch_readsw)
+               tst     r1, #3
+               bne     .insw_align
+
+.insw_aligned: mov     ip, #0xff
+               orr     ip, ip, ip, lsl #8
+               stmfd   sp!, {r4, r5, r6, lr}
+
+               subs    r2, r2, #8
+               bmi     .no_insw_8
+
+.insw_8_lp:    ldr     r3, [r0]
+               and     r3, r3, ip
+               ldr     r4, [r0]
+               orr     r3, r3, r4, lsl #16
+
+               ldr     r4, [r0]
+               and     r4, r4, ip
+               ldr     r5, [r0]
+               orr     r4, r4, r5, lsl #16
+
+               ldr     r5, [r0]
+               and     r5, r5, ip
+               ldr     r6, [r0]
+               orr     r5, r5, r6, lsl #16
+
+               ldr     r6, [r0]
+               and     r6, r6, ip
+               ldr     lr, [r0]
+               orr     r6, r6, lr, lsl #16
+
+               stmia   r1!, {r3 - r6}
+               subs    r2, r2, #8
+               bpl     .insw_8_lp
+               tst     r2, #7
+               LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
+
+.no_insw_8:    tst     r2, #4
+               beq     .no_insw_4
+
+               ldr     r3, [r0]
+               and     r3, r3, ip
+               ldr     r4, [r0]
+               orr     r3, r3, r4, lsl #16
+
+               ldr     r4, [r0]
+               and     r4, r4, ip
+               ldr     r5, [r0]
+               orr     r4, r4, r5, lsl #16
+
+               stmia   r1!, {r3, r4}
+
+.no_insw_4:    tst     r2, #2
+               beq     .no_insw_2
+
+               ldr     r3, [r0]
+               and     r3, r3, ip
+               ldr     r4, [r0]
+               orr     r3, r3, r4, lsl #16
+
+               str     r3, [r1], #4
+
+.no_insw_2:    tst     r2, #1
+               ldrne   r3, [r0]
+               strneb  r3, [r1], #1
+               movne   r3, r3, lsr #8
+               strneb  r3, [r1]
+               LOADREGS(fd, sp!, {r4, r5, r6, pc})
+
+
diff --git a/arch/arm/lib/io-readsw-armv4.S b/arch/arm/lib/io-readsw-armv4.S
new file mode 100644 (file)
index 0000000..6f1750a
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.insw_bad_alignment:
+               adr     r0, .insw_bad_align_msg
+               mov     r2, lr
+               b       SYMBOL_NAME(panic)
+.insw_bad_align_msg:
+               .asciz  "insw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
+               .align
+
+.insw_align:   tst     r1, #1
+               bne     .insw_bad_alignment
+
+               ldrh    r3, [r0]
+               strh    r3, [r1], #2
+
+               subs    r2, r2, #1
+               RETINSTR(moveq, pc, lr)
+
+ENTRY(__arch_readsw)
+               tst     r1, #3
+               bne     .insw_align
+
+               stmfd   sp!, {r4, r5, lr}
+
+               subs    r2, r2, #8
+               bmi     .no_insw_8
+
+.insw_8_lp:    ldrh    r3, [r0]
+               ldrh    r4, [r0]
+               orr     r3, r3, r4, lsl #16
+
+               ldrh    r4, [r0]
+               ldrh    r5, [r0]
+               orr     r4, r4, r5, lsl #16
+
+               ldrh    r5, [r0]
+               ldrh    r6, [r0]
+               orr     r5, r5, r6, lsl #16
+
+               ldrh    ip, [r0]
+               ldrh    lr, [r0]
+               orr     ip, ip, lr, lsl #16
+
+               stmia   r1!, {r3 - r5, ip}
+               subs    r2, r2, #8
+               bpl     .insw_8_lp
+               tst     r2, #7
+               LOADREGS(eqfd, sp!, {r4, r5, pc})
+
+.no_insw_8:    tst     r2, #4
+               beq     .no_insw_4
+
+               ldrh    r3, [r0]
+               ldrh    r4, [r0]
+               orr     r3, r3, r4, lsl #16
+
+               ldrh    r4, [r0]
+               ldrh    ip, [r0]
+               orr     r4, r4, ip, lsl #16
+
+               stmia   r1!, {r3, r4}
+
+.no_insw_4:    tst     r2, #2
+               beq     .no_insw_2
+
+               ldrh    r3, [r0]
+               ldrh    ip, [r0]
+               orr     r3, r3, ip, lsl #16
+
+               str     r3, [r1], #4
+
+.no_insw_2:    tst     r2, #1
+               ldrneh  r3, [r0]
+               strneh  r3, [r1]
+               LOADREGS(fd, sp!, {r4, r5, pc})
diff --git a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S
new file mode 100644 (file)
index 0000000..b919fda
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.outsb_align:  rsb     ip, ip, #4
+               cmp     ip, r2
+               mov     ip, r2
+               cmp     ip, #2
+               ldrb    r3, [r1], #1
+               strb    r3, [r0]
+               ldrgeb  r3, [r1], #1
+               strgeb  r3, [r0]
+               ldrgtb  r3, [r1], #1
+               strgtb  r3, [r0]
+               subs    r2, r2, ip
+               bne     .outsb_aligned
+
+ENTRY(__arch_writesb)
+               ands    ip, r1, #3
+               bne     .outsb_align
+
+.outsb_aligned:        stmfd   sp!, {r4 - r6, lr}
+
+               subs    r2, r2, #16
+               bmi     .outsb_no_16
+
+.outsb_16_lp:  ldmia   r1!, {r3 - r6}
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+
+               strb    r5, [r0]
+               mov     r5, r5, lsr #8
+               strb    r5, [r0]
+               mov     r5, r5, lsr #8
+               strb    r5, [r0]
+               mov     r5, r5, lsr #8
+               strb    r5, [r0]
+
+               strb    r6, [r0]
+               mov     r6, r6, lsr #8
+               strb    r6, [r0]
+               mov     r6, r6, lsr #8
+               strb    r6, [r0]
+               mov     r6, r6, lsr #8
+               strb    r6, [r0]
+               subs    r2, r2, #16
+               bpl     .outsb_16_lp
+
+               tst     r2, #15
+               LOADREGS(eqfd, sp!, {r4 - r6, pc})
+
+.outsb_no_16:  tst     r2, #8
+               beq     .outsb_no_8
+
+               ldmia   r1, {r3, r4}
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+               mov     r4, r4, lsr #8
+               strb    r4, [r0]
+
+.outsb_no_8:   tst     r2, #4
+               bne     .outsb_no_4
+
+               ldr     r3, [r1], #4
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+               mov     r3, r3, lsr #8
+               strb    r3, [r0]
+
+.outsb_no_4:   ands    r2, r2, #3
+               LOADREGS(eqfd, sp!, {r4 - r6, pc})
+               cmp     r2, #2
+               ldrb    r3, [r1], #1
+               strb    r3, [r0]
+               ldrgeb  r3, [r1], #1
+               strgeb  r3, [r0]
+               ldrgtb  r3, [r1]
+               strgtb  r3, [r0]
+               LOADREGS(fd, sp!, {r4 - r6, pc})
diff --git a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S
new file mode 100644 (file)
index 0000000..ccda08c
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+ENTRY(__arch_writesl)
+               ands    ip, r1, #3
+               bne     2f
+
+1:             ldr     r3, [r1], #4
+               str     r3, [r0]
+               subs    r2, r2, #1
+               bne     1b
+               mov     pc, lr
+
+2:             bic     r1, r1, #3
+               cmp     ip, #2
+               ldr     ip, [r1], #4
+               mov     ip, ip, lsr #16
+               blt     4f
+               bgt     5f
+
+3:             ldr     r3, [r1], #4
+               orr     ip, ip, r3, lsl #16
+               str     ip, [r0]
+               mov     ip, r3, lsr #16
+               subs    r2, r2, #1
+               bne     3b
+               mov     pc, lr
+
+4:             ldr     r3, [r1], #4
+               orr     ip, ip, r3, lsl #8
+               str     ip, [r0]
+               mov     ip, r3, lsr #24
+               subs    r2, r2, #1
+               bne     4b
+               mov     pc, lr
+
+5:             ldr     r3, [r1], #4
+               orr     ip, ip, r3, lsl #24
+               str     ip, [r0]
+               mov     ip, r3, lsr #8
+               subs    r2, r2, #1
+               bne     5b
+               mov     pc, lr
+
+
diff --git a/arch/arm/lib/io-writesw-armv3.S b/arch/arm/lib/io-writesw-armv3.S
new file mode 100644 (file)
index 0000000..29c94cc
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.outsw_bad_alignment:
+               adr     r0, .outsw_bad_align_msg
+               mov     r2, lr
+               b       SYMBOL_NAME(panic)
+.outsw_bad_align_msg:
+               .asciz  "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
+               .align
+
+.outsw_align:  tst     r1, #1
+               bne     .outsw_bad_alignment
+
+               add     r1, r1, #2
+
+               ldr     r3, [r1, #-4]
+               mov     r3, r3, lsr #16
+               orr     r3, r3, r3, lsl #16
+               str     r3, [r0]
+               subs    r2, r2, #1
+               RETINSTR(moveq, pc, lr)
+
+ENTRY(__arch_writesw)
+               tst     r1, #3
+               bne     .outsw_align
+
+.outsw_aligned:        stmfd   sp!, {r4, r5, r6, lr}
+
+               subs    r2, r2, #8
+               bmi     .no_outsw_8
+.outsw_8_lp:   ldmia   r1!, {r3, r4, r5, r6}
+
+               mov     ip, r3, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r3, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+               mov     ip, r4, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r4, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+               mov     ip, r5, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r5, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+               mov     ip, r6, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r6, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+               subs    r2, r2, #8
+               bpl     .outsw_8_lp
+               tst     r2, #7
+               LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
+
+.no_outsw_8:   tst     r2, #4
+               beq     .no_outsw_4
+
+               ldmia   r1!, {r3, r4}
+
+               mov     ip, r3, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r3, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+               mov     ip, r4, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r4, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+.no_outsw_4:   tst     r2, #2
+               beq     .no_outsw_2
+
+               ldr     r3, [r1], #4
+
+               mov     ip, r3, lsl #16
+               orr     ip, ip, ip, lsr #16
+               str     ip, [r0]
+
+               mov     ip, r3, lsr #16
+               orr     ip, ip, ip, lsl #16
+               str     ip, [r0]
+
+.no_outsw_2:   tst     r2, #1
+
+               ldrne   r3, [r1]
+
+               movne   ip, r3, lsl #16
+               orrne   ip, ip, ip, lsr #16
+               strne   ip, [r0]
+
+               LOADREGS(fd, sp!, {r4, r5, r6, pc})
+
+
diff --git a/arch/arm/lib/io-writesw-armv4.S b/arch/arm/lib/io-writesw-armv4.S
new file mode 100644 (file)
index 0000000..0f96d13
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ *  linux/arch/arm/lib/io-readsb.S
+ *
+ *  Copyright (C) 1995-2000 Russell King
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+.outsw_bad_alignment:
+               adr     r0, .outsw_bad_align_msg
+               mov     r2, lr
+               b       SYMBOL_NAME(panic)
+.outsw_bad_align_msg:
+               .asciz  "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
+               .align
+
+.outsw_align:  tst     r1, #1
+               bne     .outsw_bad_alignment
+
+               ldrh    r3, [r1], #2
+               strh    r3, [r0]
+
+               subs    r2, r2, #1
+               RETINSTR(moveq, pc, lr)
+
+ENTRY(__arch_writesw)
+               tst     r1, #3
+               bne     .outsw_align
+
+               subs    r2, r2, #8
+               bmi     .no_outsw_8
+
+               stmfd   sp!, {r4, r5, lr}
+
+.outsw_8_lp:   ldmia   r1!, {r3, r4, r5, ip}
+
+               strh    r3, [r0]
+               mov     r3, r3, lsr #16
+               strh    r3, [r0]
+               strh    r4, [r0]
+               mov     r4, r4, lsr #16
+               strh    r4, [r0]
+               strh    r5, [r0]
+               mov     r5, r5, lsr #16
+               strh    r5, [r0]
+               strh    ip, [r0]
+               mov     ip, ip, lsr #16
+               strh    ip, [r0]
+
+               subs    r2, r2, #8
+               bpl     .outsw_8_lp
+               ldmfd   sp!, {r4, r5, lr}
+               tst     r2, #7
+               RETINSTR(moveq, pc, lr)
+
+.no_outsw_8:   tst     r2, #4
+               ldmneia r1!, {r3, ip}
+               strneh  r3, [r0]
+               movne   r3, r3, lsr #16
+               strneh  r3, [r0]
+               strneh  ip, [r0]
+               movne   ip, ip, lsr #16
+               strneh  ip, [r0]
+               tst     r2, #2
+               ldrne   r3, [r1], #4
+               strneh  r3, [r0]
+               movne   r3, r3, lsr #16
+               strneh  r3, [r0]
+               tst     r2, #1
+               ldrneh  r3, [r1]
+               strneh  r3, [r0]
+               RETINSTR(mov, pc, lr)
+
+
index 4b47b6e4761b028716ff43546c624105ac6e9a9b..1a7a790cc2900adbd1d0c87f44e802e7d672ac01 100644 (file)
@@ -65,9 +65,9 @@ static inline void wb977_ww(int reg, int val)
  */
 spinlock_t gpio_lock = SPIN_LOCK_UNLOCKED;
 
-static unsigned int current_gpio_op = 0;
-static unsigned int current_gpio_io = 0;
-static unsigned int current_cpld = 0;
+static unsigned int current_gpio_op;
+static unsigned int current_gpio_io;
+static unsigned int current_cpld;
 
 void gpio_modify_op(int mask, int set)
 {
index 0e198ab8ad8b0719d33bfebf2a823d0ab6f284d5..1cbdd77900e293d0f8ff2e6eb54ee6998d6b5a04 100644 (file)
@@ -126,6 +126,39 @@ out:
        return fault;
 }
 
+static int __do_vmalloc_fault(unsigned long addr, struct mm_struct *mm)
+{
+       /* Synchronise this task's top level page-table
+        * with the 'reference' page table.
+        */
+       int offset = __pgd_offset(addr);
+       pgd_t *pgd, *pgd_k;
+       pmd_t *pmd, *pmd_k;
+
+       pgd_k = init_mm.pgd + offset;
+       if (!pgd_present(*pgd_k))
+               goto bad_area;
+
+       pgd = mm->pgd + offset;
+#if 0  /* note that we are two-level */
+       if (!pgd_present(*pgd))
+               set_pgd(pgd, *pgd_k);
+#endif
+
+       pmd_k = pmd_offset(pgd_k, addr);
+       if (pmd_none(*pmd_k))
+               goto bad_area;
+
+       pmd = pmd_offset(pgd, addr);
+       if (!pmd_none(*pmd))
+               goto bad_area;
+       set_pmd(pmd, *pmd_k);
+       return 1;
+
+bad_area:
+       return -2;
+}
+
 static int do_page_fault(unsigned long addr, int mode, struct pt_regs *regs)
 {
        struct task_struct *tsk;
@@ -136,6 +169,18 @@ static int do_page_fault(unsigned long addr, int mode, struct pt_regs *regs)
        tsk = current;
        mm  = tsk->mm;
 
+       /*
+        * We fault-in kernel-space virtual memory on-demand. The
+        * 'reference' page table is init_mm.pgd.
+        *
+        * NOTE! We MUST NOT take any locks for this case. We may
+        * be in an interrupt or a critical region, and should
+        * only copy the information from the master page table,
+        * nothing more.
+        */
+       if (addr >= TASK_SIZE)
+               goto vmalloc_fault;
+
        /*
         * If we're in an interrupt or have no user
         * context, we must not take the fault..
@@ -147,6 +192,7 @@ static int do_page_fault(unsigned long addr, int mode, struct pt_regs *regs)
        fault = __do_page_fault(mm, addr, mode, tsk);
        up(&mm->mmap_sem);
 
+ret:
        /*
         * Handle the "normal" case first
         */
@@ -240,4 +286,8 @@ no_context:
        do_exit(SIGKILL);
 
        return 0;
+
+vmalloc_fault:
+       fault = __do_vmalloc_fault(addr, mm);
+       goto ret;
 }
index ea833c58d18d5cf144f57a0e597e2280c2717d1b..bfa085a52c10ca849682200dffbebefe682a5247 100644 (file)
@@ -377,34 +377,48 @@ static int __init check_initrd(struct meminfo *mi)
 /*
  * Reserve the various regions of node 0
  */
-static inline void reserve_node_zero(unsigned int bootmap_pfn, unsigned int bootmap_pages)
+static __init void reserve_node_zero(unsigned int bootmap_pfn, unsigned int bootmap_pages)
 {
+       pg_data_t *pgdat = NODE_DATA(0);
+
        /*
         * Register the kernel text and data with bootmem.
         * Note that this can only be in node 0.
         */
-       reserve_bootmem_node(NODE_DATA(0), __pa(&_stext), &_end - &_stext);
+       reserve_bootmem_node(pgdat, __pa(&_stext), &_end - &_stext);
 
 #ifdef CONFIG_CPU_32
        /*
         * Reserve the page tables.  These are already in use,
         * and can only be in node 0.
         */
-       reserve_bootmem_node(NODE_DATA(0), __pa(swapper_pg_dir),
+       reserve_bootmem_node(pgdat, __pa(swapper_pg_dir),
                             PTRS_PER_PGD * sizeof(void *));
-#else
-       /*
-        * Stop this memory from being grabbed - its special DMA
-        * memory that is required for the screen.
-        */
-       reserve_bootmem_node(NODE_DATA(0), 0x02000000, 0x00080000);
 #endif
        /*
         * And don't forget to reserve the allocator bitmap,
         * which will be freed later.
         */
-       reserve_bootmem_node(NODE_DATA(0), bootmap_pfn << PAGE_SHIFT,
+       reserve_bootmem_node(pgdat, bootmap_pfn << PAGE_SHIFT,
                             bootmap_pages << PAGE_SHIFT);
+
+       /*
+        * Hmm... This should go elsewhere, but we really really
+        * need to stop things allocating the low memory; we need
+        * a better implementation of GFP_DMA which does not assume
+        * that DMA-able memory starts at zero.
+        */
+       if (machine_is_integrator())
+               reserve_bootmem_node(pgdat, 0, __pa(swapper_pg_dir));
+       /*
+        * These should likewise go elsewhere.  They pre-reserve
+        * the screen memory region at the start of main system
+        * memory.
+        */
+       if (machine_is_archimedes() || machine_is_a5k())
+               reserve_bootmem_node(pgdat, 0x02000000, 0x00080000);
+       if (machine_is_p720t())
+               reserve_bootmem_node(pgdat, 0xc0000000, 0x00014000);
 }
 
 /*
@@ -412,11 +426,12 @@ static inline void reserve_node_zero(unsigned int bootmap_pfn, unsigned int boot
  */
 static inline void free_bootmem_node_bank(int node, struct meminfo *mi)
 {
+       pg_data_t *pgdat = NODE_DATA(node);
        int bank;
 
        for (bank = 0; bank < mi->nr_banks; bank++)
                if (mi->bank[bank].node == node)
-                       free_bootmem_node(NODE_DATA(node), mi->bank[bank].start,
+                       free_bootmem_node(pgdat, mi->bank[bank].start,
                                          mi->bank[bank].size);
 }
 
@@ -632,9 +647,11 @@ static inline void free_area(unsigned long addr, unsigned long end, char *s)
 
 void free_initmem(void)
 {
-       free_area((unsigned long)(&__init_begin),
-                 (unsigned long)(&__init_end),
-                 "init");
+       if (!machine_is_integrator()) {
+               free_area((unsigned long)(&__init_begin),
+                         (unsigned long)(&__init_end),
+                         "init");
+       }
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD
index 2ace55d47795767349137cd8ac90c18ac312f04c..d96fcbccb250c18d0dd87e93c481e1497c2c109c 100644 (file)
@@ -361,6 +361,7 @@ void __init memtable_init(struct meminfo *mi)
                p ++;
        }
 
+#ifdef FLUSH_BASE
        p->physical   = FLUSH_BASE_PHYS;
        p->virtual    = FLUSH_BASE;
        p->length     = PGDIR_SIZE;
@@ -371,6 +372,7 @@ void __init memtable_init(struct meminfo *mi)
        p->bufferable = 1;
 
        p ++;
+#endif
 
 #ifdef FLUSH_BASE_MINICACHE
        p->physical   = FLUSH_BASE_PHYS + PGDIR_SIZE;
index 13620ad5f9c3f0fafba767c5e6bf178732f326c3..e6fc86bd10a7dd9045c7f234063d592d9655e57b 100644 (file)
@@ -139,7 +139,7 @@ Ldata_ldmstm:       tst     r4, #1 << 21                    @ check writeback bit
 Ldata_saver7:  str     r7, [sp, r5, lsr #14]           @ Put register
 Ldata_simple:  mrc     p15, 0, r0, c6, c0, 0           @ get FAR
                mrc     p15, 0, r3, c5, c0, 0           @ get FSR
-               and     r3, r3, #15
+               and     r3, r3, #255
                mov     pc, lr
 
 ENTRY(cpu_arm720_data_abort)
@@ -155,7 +155,7 @@ ENTRY(cpu_arm720_data_abort)
                b       Ldata_unknown
                b       Ldata_unknown
                b       Ldata_lateldrpostconst          @ ldr   rd, [rn], #m
-               b       Ldata_lateldrpreconst           @ ldr   rd, [rn, #m]    @ RegVal
+               b       Ldata_lateldrpreconst           @ ldr   rd, [rn, #m] 
                b       Ldata_lateldrpostreg            @ ldr   rd, [rn], rm
                b       Ldata_lateldrprereg             @ ldr   rd, [rn, rm]
                b       Ldata_ldmstm                    @ ldm*a rn, <rlist>
@@ -177,25 +177,14 @@ Ldata_lateldrhpre:
                tst     r4, #1 << 21                    @ check writeback bit
                beq     Ldata_simple
 Ldata_lateldrhpost:
-               tst     r4, #1 << 22                    @ check if register or immediate offset
-               beq     Ldata_lateldrhpostreg
-Ldata_lateldrhpostconst:
-               and     r2, r4, #0xf                    @ load and clear low nibble of const offset
-               and     r5, r4, #0xf00                  @ load and clear high nibble of const offset
-               orrs    r2, r2, r5, lsr #4              @ create offset
-               beq     Ldata_simple                    @ don't have to do anything if zero
-               and     r5, r4, #0xf << 16              @ get Rn
-               ldr     r0, [sp, r5, lsr #14]
+               and     r5, r4, #0x00f                  @ get Rm / low nibble of immediate value
+               tst     r4, #1 << 22                    @ if (immediate offset)
+               andne   r2, r4, #0xf00                  @ { immediate high nibble
+               orrne   r2, r5, r2, lsr #4              @   combine nibbles } else
+               ldreq   r2, [sp, r5, lsl #2]            @ { load Rm value }
+               and     r5, r4, #15 << 16               @ get Rn
+               ldr     r0, [sp, r5, lsr #14]           @ load Rn value
                tst     r4, #1 << 23                    @ U bit
-               subne   r7, r0, r2, lsr #20
-               addeq   r7, r0, r2, lsr #20
-               b       Ldata_saver7
-Ldata_lateldrhpostreg:
-               and     r5, r4, #0xf
-               ldr     r2, [sp, r5, lsl #2]            @ get Rm
-               and     r5, r4, #0xf << 16
-               ldr     r0, [sp, r5, lsr #14]           @ get Rn
-               tst     r4, #1 << 23
                subne   r7, r0, r2
                addeq   r7, r0, r2
                b       Ldata_saver7
@@ -385,7 +374,7 @@ ENTRY(cpu_arm720_reset)
 
        
 cpu_armvlsi_name:
-               .asciz  "ARM/VLSI"
+               .asciz  "ARM"
 cpu_arm720_name:
                .asciz  "ARM720T"
                .align
@@ -471,8 +460,8 @@ cpu_elf_name:       .asciz  "v4"
 __arm720_proc_info:
                .long   0x41807200                              @ cpu_val
                .long   0xffffff00                              @ cpu_mask
-               .long   0x00000c0e                              @ __cpu_mmu_flags
-               b       __arm720_setup                          @ --cpu_flush
+               .long   0x00000c1e                              @ section_mmu_flags
+               b       __arm720_setup                          @ cpu_flush
                .long   cpu_arch_name                           @ arch_name
                .long   cpu_elf_name                            @ elf_name
                .long   HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT    @ elf_hwcap
index 0415f31e02febeab15f8cd91629a2037fe511547..5e5d4fdcfdbe6990ab8ccefd646eac6645046215 100644 (file)
@@ -44,7 +44,7 @@ unsigned int DoubleCPDO(const unsigned int opcode)
    float64 rFm, rFn;
    unsigned int Fd, Fm, Fn, nRc = 1;
 
-   //fp_printk("DoubleCPDO(0x%08x)\n",opcode);
+   //printk("DoubleCPDO(0x%08x)\n",opcode);
    
    Fm = getFm(opcode);
    if (CONSTANT_FM(opcode))
@@ -65,7 +65,7 @@ unsigned int DoubleCPDO(const unsigned int opcode)
 
         case typeExtended:
             // !! patb
-           //fp_printk("not implemented! why not?\n");
+           //printk("not implemented! why not?\n");
             //!! ScottB
             // should never get here, if extended involved
             // then other operand should be promoted then
index 810f57102ee6b8f61bbdec18d29bed5b602e3ccc..762b1a0ef9595ae190b5a6bc424cec6ff0403026 100644 (file)
@@ -42,7 +42,7 @@ unsigned int ExtendedCPDO(const unsigned int opcode)
    floatx80 rFm, rFn;
    unsigned int Fd, Fm, Fn, nRc = 1;
 
-   //fp_printk("ExtendedCPDO(0x%08x)\n",opcode);
+   //printk("ExtendedCPDO(0x%08x)\n",opcode);
    
    Fm = getFm(opcode);
    if (CONSTANT_FM(opcode))
index fd39a59f74a903af794c9bfb1f484c25a74f73ef..b2eaf1aad905cf02461e24233990ee670b53ed02 100644 (file)
@@ -30,7 +30,7 @@ unsigned int EmulateCPDO(const unsigned int opcode)
 {
    unsigned int Fd, nType, nDest, nRc = 1;
    
-   //fp_printk("EmulateCPDO(0x%08x)\n",opcode);
+   //printk("EmulateCPDO(0x%08x)\n",opcode);
 
    /* Get the destination size.  If not valid let Linux perform
       an invalid instruction trap. */
index 0bad187694cd8af4019325cee95840e4a32d1341..d6a7bdc4a4c03e64349a3e95862cbbbc7af09b22 100644 (file)
@@ -189,7 +189,7 @@ unsigned int PerformLDF(const unsigned int opcode)
    unsigned int *pBase, *pAddress, *pFinal, nRc = 1,
      write_back = WRITE_BACK(opcode);
 
-   //fp_printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
+   //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
 
    pBase = (unsigned int*)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
@@ -223,7 +223,7 @@ unsigned int PerformSTF(const unsigned int opcode)
    unsigned int *pBase, *pAddress, *pFinal, nRc = 1,
      write_back = WRITE_BACK(opcode);
    
-   //fp_printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
+   //printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
    SetRoundingMode(ROUND_TO_NEAREST);
    
    pBase = (unsigned int*)readRegister(getRn(opcode));
@@ -322,7 +322,7 @@ unsigned int EmulateCPDT(const unsigned int opcode)
 {
   unsigned int nRc = 0;
 
-  //fp_printk("EmulateCPDT(0x%08x)\n",opcode);
+  //printk("EmulateCPDT(0x%08x)\n",opcode);
   
   if (LDF_OP(opcode))
   {
index d479ee932b3bd8b2ceec485b06a6c7efb60e76c7..c17c6946503717a1f85cec86252224576a62c8f1 100644 (file)
@@ -44,7 +44,7 @@ unsigned int EmulateCPRT(const unsigned int opcode)
 {
   unsigned int nRc = 1;
 
-  //fp_printk("EmulateCPRT(0x%08x)\n",opcode);
+  //printk("EmulateCPRT(0x%08x)\n",opcode);
 
   if (opcode & 0x800000)
   {
@@ -188,7 +188,7 @@ static unsigned int PerformComparison(const unsigned int opcode)
    int n_flag = opcode & 0x200000;     /* 1 if CNxx */
    unsigned int flags = 0;
 
-   //fp_printk("PerformComparison(0x%08x)\n",opcode);
+   //printk("PerformComparison(0x%08x)\n",opcode);
 
    Fn = getFn(opcode);
    Fm = getFm(opcode);
@@ -201,21 +201,21 @@ static unsigned int PerformComparison(const unsigned int opcode)
    switch (fpa11->fType[Fn])
    {
       case typeSingle: 
-        //fp_printk("single.\n");
+        //printk("single.\n");
        if (float32_is_nan(fpa11->fpreg[Fn].fSingle))
           goto unordered;
         rFn = float32_to_floatx80(fpa11->fpreg[Fn].fSingle);
       break;
 
       case typeDouble: 
-        //fp_printk("double.\n");
+        //printk("double.\n");
        if (float64_is_nan(fpa11->fpreg[Fn].fDouble))
           goto unordered;
         rFn = float64_to_floatx80(fpa11->fpreg[Fn].fDouble);
       break;
       
       case typeExtended: 
-        //fp_printk("extended.\n");
+        //printk("extended.\n");
        if (floatx80_is_nan(fpa11->fpreg[Fn].fExtended))
           goto unordered;
         rFn = fpa11->fpreg[Fn].fExtended;
@@ -226,32 +226,32 @@ static unsigned int PerformComparison(const unsigned int opcode)
 
    if (CONSTANT_FM(opcode))
    {
-     //fp_printk("Fm is a constant: #%d.\n",Fm);
+     //printk("Fm is a constant: #%d.\n",Fm);
      rFm = getExtendedConstant(Fm);
      if (floatx80_is_nan(rFm))
         goto unordered;
    }
    else
    {
-     //fp_printk("Fm = r%d which contains a ",Fm);
+     //printk("Fm = r%d which contains a ",Fm);
       switch (fpa11->fType[Fm])
       {
          case typeSingle: 
-           //fp_printk("single.\n");
+           //printk("single.\n");
           if (float32_is_nan(fpa11->fpreg[Fm].fSingle))
              goto unordered;
            rFm = float32_to_floatx80(fpa11->fpreg[Fm].fSingle);
          break;
 
          case typeDouble: 
-           //fp_printk("double.\n");
+           //printk("double.\n");
           if (float64_is_nan(fpa11->fpreg[Fm].fDouble))
              goto unordered;
            rFm = float64_to_floatx80(fpa11->fpreg[Fm].fDouble);
          break;
       
          case typeExtended: 
-           //fp_printk("extended.\n");
+           //printk("extended.\n");
           if (floatx80_is_nan(fpa11->fpreg[Fm].fExtended))
              goto unordered;
            rFm = fpa11->fpreg[Fm].fExtended;
index 9d4f1570d5002f70ccd67bd1e6c1497ff81b50ba..24fa2775f0a004075889139f34ca937d81691df4 100644 (file)
@@ -46,7 +46,6 @@ extern FPA11 *fpa11;
 typedef struct task_struct*    PTASK;
 
 #ifdef MODULE
-int fp_printk(const char *,...);
 void fp_send_sig(unsigned long sig, PTASK p, int priv);
 #if LINUX_VERSION_CODE > 0x20115
 MODULE_AUTHOR("Scott Bambrough <scottb@rebel.com>");
@@ -54,7 +53,6 @@ MODULE_DESCRIPTION("NWFPE floating point emulator");
 #endif
 
 #else
-#define fp_printk      printk
 #define fp_send_sig    send_sig
 #define kern_fp_enter  fp_enter
 #endif
@@ -74,23 +72,14 @@ extern void nwfpe_enter(void);
 /* Address of user registers on the kernel stack. */
 unsigned int *userRegisters;
 
-void __init fpe_version(void)
-{
-  static const char szTitle[] = "<4>NetWinder Floating Point Emulator ";
-  static const char szVersion[] = "V0.95 ";
-  static const char szCopyright[] = "(c) 1998-1999 Rebel.com\n";
-  fp_printk(szTitle);
-  fp_printk(szVersion);
-  fp_printk(szCopyright);
-}
-
 int __init fpe_init(void)
 {
   if (sizeof(FPA11) > sizeof(union fp_state))
     printk(KERN_ERR "nwfpe: bad structure size\n");
   else {
     /* Display title, version and copyright information. */
-    fpe_version();
+    printk(KERN_WARNING "NetWinder Floating Point Emulator V0.95 "
+          "(c) 1998-1999 Rebel.com\n");
 
     /* Save pointer to the old FP handler and then patch ourselves in */
     orig_fp_enter = kern_fp_enter;
index a7fc76cc8d38ef64d1c52a1093e3b9ce9aa4dadd..a6e00001190cdd7c5f1b4db281a2d0d545b495dc 100644 (file)
@@ -39,7 +39,7 @@ and exception flags.
 */
 int8 float_rounding_mode = float_round_nearest_even;
 int8 floatx80_rounding_precision = 80;
-int8 float_exception_flags = 0;
+int8 float_exception_flags;
 
 /*
 -------------------------------------------------------------------------------
@@ -418,9 +418,8 @@ static float64 roundAndPackFloat64( flag zSign, int16 zExp, bits64 zSig )
              || (    ( zExp == 0x7FD )
                   && ( (sbits64) ( zSig + roundIncrement ) < 0 ) )
            ) {
-            //register int lr;
-            //__asm__("mov %0, lr" :: "g" (lr));
-            //fp_printk("roundAndPackFloat64 called from 0x%08x\n",lr);
+            //register int lr = __builtin_return_address(0);
+            //printk("roundAndPackFloat64 called from 0x%08x\n",lr);
             float_raise( float_flag_overflow | float_flag_inexact );
             return packFloat64( zSign, 0x7FF, 0 ) - ( roundIncrement == 0 );
         }
index f3d1fb0b1e56d62fc2abcb8f70834f2815a92583..ff7ccec77ed7afdf0218a904842eae72288914c1 100644 (file)
@@ -1,7 +1,10 @@
 # Database of machine macros and numbers
 #
-# To add an entry into this database, please see
-# Documentation/arm/README
+# Please do not send patches to this file; it is automatically generated!
+# To add an entry into this database, please see Documentation/arm/README,
+# or contact rmk@arm.linux.org.uk
+#
+# Last update: Mon Nov 20 22:59:11 2000
 #
 # machine_is_xxx       CONFIG_xxxx             MACH_TYPE_xxx           number
 #
@@ -14,7 +17,7 @@ cats                  ARCH_CATS               CATS                    6
 tbox                   ARCH_TBOX               TBOX                    7
 co285                  ARCH_CO285              CO285                   8
 clps7110               ARCH_CLPS7110           CLPS7110                9
-arc                    ARCH_ARC                ARCHIMEDES              10
+archimedes             ARCH_ARC                ARCHIMEDES              10
 a5k                    ARCH_A5K                A5K                     11
 etoile                 ARCH_ETOILE             ETOILE                  12
 lacie_nas              ARCH_LACIE_NAS          LACIE_NAS               13
@@ -28,7 +31,7 @@ pleb                  SA1100_PLEB             PLEB                    20
 integrator             ARCH_INTEGRATOR         INTEGRATOR              21
 bitsy                  SA1100_BITSY            BITSY                   22
 ixp1200                        ARCH_IXP1200            IXP1200                 23
-thinclient             SA1100_THINCLIENT       THINCLIENT              24
+p720t                  ARCH_P720T              P720T                   24
 assabet                        SA1100_ASSABET          ASSABET                 25
 victor                 SA1100_VICTOR           VICTOR                  26
 lart                   SA1100_LART             LART                    27
@@ -42,8 +45,16 @@ extenex1             SA1100_EXTENEX1         EXTENEX1                34
 sherman                        SA1100_SHERMAN          SHERMAN                 35
 accelent_sa            SA1100_ACCELENT         ACCELENT_SA             36
 accelent_l7200         ARCH_L7200_ACCELENT     ACCELENT_L7200          37
+netport                        SA1100_NETPORT          NETPORT                 38
+pangolin               SA1100_PANGOLIN         PANGOLIN                39
+yopy                   SA1100_YOPY             YOPY                    40
+sa1100                 SA1100_SA1100           SA1100                  41
+huw_webpanel           ARCH_HUW_WEBPANEL       HUW_WEBPANEL            42
+spotme                 ARCH_SPOTME             SPOTME                  43
+freebird               ARCH_FREEBIRD           FREEBIRD                44
+ti925                  ARCH_TI925              TI925                   45
+riscstation            ARCH_RISCSTATION        RISCSTATION             46
+cavy                   SA1100_CAVY             CAVY                    47
 
 # The following are unallocated
 empeg                  SA1100_EMPEG            EMPEG
-tifon                  SA1100_TIFON            TIFON
-penny                  SA1100_PENNY            PENNY
index 5353e7f8f508d1a32b5e0b2d14f6245d89329839..0c0e720aaf7f5a6b2791206a5c744188e9fbb360 100644 (file)
@@ -9,6 +9,7 @@ SECTIONS
        . = TEXTADDR;
 
        .init : {
+               _stext = .;
                __init_begin = .;       /* Init code and data           */
                        *(.text.init)
                __proc_info_begin = .;
index b54f2bd92361af44efbee8c68dd74d2673003a32..b0398852d16e83560b456d8859635d5f73e496c0 100644 (file)
@@ -8,6 +8,7 @@ SECTIONS
 {
        . = TEXTADDR;
        .init : {                       /* Init code and data           */
+               _stext = .;
                __init_begin = .;
                        *(.text.init)
                __proc_info_begin = .;
index 0da4e866eaadb80475ff07cf1f90ffccd4271597..276c6336878886cbb4b3ce3ab2316a68f820ee37 100644 (file)
@@ -631,39 +631,43 @@ end_move_self:                                    # now we are at the right place
                                                # appropriate
 
 # that was painless, now we enable a20
+
+#
+# First, try the "fast A20 gate".
+#
+       inb     $0x92,%al
+       orb     $0x02,%al                       # Fast A20 on
+       andb    $0xfe,%al                       # Don't reset CPU!
+       outb    %al,$0x92
+
+#
+# Now comes the tricky part: some machines don't have a KBC and thus
+# would end up looping almost indefinitely here.  HOWEVER, once we
+# have done the first command write, we must not stop the sequence.
+# Therefore, the first empty_8042 should check to see if the fast A20
+# did the trick and stop its probing at that stage; but subsequent ones
+# must not do so.
+#
+       movb    $0x01,%dl                       # A20-sensitive
        call    empty_8042
+       jnz     a20_wait                        # A20 already on?
 
        movb    $0xD1, %al                      # command write
        outb    %al, $0x64
-       call    empty_8042
+       call    empty_8042_no_a20_exit
 
        movb    $0xDF, %al                      # A20 on
        outb    %al, $0x60
-       call    empty_8042
-
-#
-#      You must preserve the other bits here. Otherwise embarrasing things
-#      like laptops powering off on boot happen. Corrected version by Kira
-#      Brown from Linux 2.2
-#
-       inb     $0x92, %al                      # 
-       orb     $02, %al                        # "fast A20" version
-       outb    %al, $0x92                      # some chips have only this
+       call    empty_8042_no_a20_exit
 
 # wait until a20 really *is* enabled; it can take a fair amount of
 # time on certain systems; Toshiba Tecras are known to have this
 # problem.  The memory location used here (0x200) is the int 0x80
 # vector, which should be safe to use.
 
-       xorw    %ax, %ax                        # segment 0x0000
-       movw    %ax, %fs
-       decw    %ax                             # segment 0xffff (HMA)
-       movw    %ax, %gs
 a20_wait:
-       incw    %ax                             # unused memory location <0xfff0
-       movw    %ax, %fs:(0x200)                # we use the "int 0x80" vector
-       cmpw    %gs:(0x210), %ax                # and its corresponding HMA addr
-       je      a20_wait                        # loop until no longer aliased
+       call    a20_test
+       jz      a20_wait
 
 # make sure any possible coprocessor is properly reset..
        xorw    %ax, %ax
@@ -825,14 +829,26 @@ bootsect_panic_mess:
 #
 # Some machines have delusions that the keyboard buffer is always full
 # with no keyboard attached...
+#
+# If %dl is nonzero on entry, terminate with ZF=0 if A20 becomes alive,
+# otherwise terminate with ZF=1.
 
+empty_8042_no_a20_exit:
+       xorb    %dl,%dl                         # Not A20-sensitive
 empty_8042:
        pushl   %ecx
-       movl    $0x00FFFFFF, %ecx
+       movl    $0x000FFFFF, %ecx
 
 empty_8042_loop:
        decl    %ecx
-       jz      empty_8042_end_loop
+       jz      empty_8042_end_loop             # ZF=1
+
+       # Always call the test routine to keep delays constant
+       call    a20_test
+       jz      ignore_a20
+       and     %dl,%dl
+       jnz     empty_8042_end_loop             # ZF=0
+ignore_a20:
 
        call    delay
 
@@ -847,10 +863,38 @@ empty_8042_loop:
 no_output:
        testb   $2, %al                         # is input buffer full?
        jnz     empty_8042_loop                 # yes - loop
+       # ZF=1
+
 empty_8042_end_loop:
        popl    %ecx
        ret
 
+a20_test:
+       pushw   %ax
+       pushw   %cx
+       pushw   %fs
+       pushw   %gs
+       xorw    %ax, %ax                        # segment 0x0000
+       movw    %ax, %fs
+       decw    %ax                             # segment 0xffff (HMA)
+       movw    %ax, %gs
+       movw    0x100,%cx
+       movw    %fs:(0x200),%ax                 # So we keep cycling...
+       pushw   %ax                             # Be extra paranoid...
+a20_loop:
+       incw    %ax                             # unused memory location <0xfff0
+       movw    %ax, %fs:(0x200)                # we use the "int 0x80" vector
+       cmpw    %gs:(0x210), %ax                # and its corresponding HMA addr
+       jnz     a20_ret                         # if ZF not set A20 is functional
+       loop    a20_loop
+a20_ret:
+       popw    %fs:(0x200)
+       popw    %gs
+       popw    %fs
+       popw    %cx
+       popw    %ax
+       ret                                     # if ZF set A20 is not operational
+
 # Read the cmos clock. Return the seconds in al
 gettime:
        pushw   %cx
@@ -867,7 +911,8 @@ gettime:
 
 # Delay is needed after doing I/O
 delay:
-       jmp     .+2                             # jmp $+2
+       outb    %al,$0x80                       # What the main kernel uses
+       outb    %al,$0x80
        ret
 
 # Descriptor tables
index 17a929bb28d0c96f6467f9e8bbcdb376774af01e..d9bd520ac541dc085b4285c363e1de4166935e2d 100644 (file)
@@ -176,7 +176,6 @@ static void pirq_ali_ide_interrupt(struct pci_dev *router, unsigned reg, unsigne
        pci_read_config_byte(router, reg, &x);
        x = (x & 0xe0) | val;   /* clear the level->edge transform */
        pci_write_config_byte(router, reg, x);
-       eisa_set_level_irq(irq);
 }
 
 static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
@@ -196,7 +195,6 @@ static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, i
                        pirq_ali_ide_interrupt(router, 0x75, val, irq);
                        break;
                }
-               eisa_set_level_irq(irq);
                return 1;
        }
        return 0;
@@ -279,6 +277,27 @@ static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
        return 1;
 }
 
+static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
+{
+       u8 x;
+       int reg = 0x41 + (pirq - 'A') ;
+
+       pci_read_config_byte(router, reg, &x);
+       return (x & 0x80) ? 0 : (x & 0x0f);
+}
+
+static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+{
+       u8 x;
+       int reg = 0x41 + (pirq - 'A') ;
+
+       pci_read_config_byte(router, reg, &x);
+       x = (pirq & 0x20) ? 0 : (irq & 0x0f);
+       pci_write_config_byte(router, reg, x);
+
+       return 1;
+}
+
 #ifdef CONFIG_PCI_BIOS
 
 static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
@@ -309,7 +328,7 @@ static struct irq_router pirq_routers[] = {
        { "OPTI", PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C700, pirq_opti_get, pirq_opti_set },
 
        { "NatSemi", PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5520, pirq_cyrix_get, pirq_cyrix_set },
-
+       { "SIS", PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, pirq_sis_get, pirq_sis_set },
        { "default", 0, 0, NULL, NULL }
 };
 
@@ -427,6 +446,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
        } else if (newirq && r->set && (dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
                DBG(" -> assigning IRQ %d", newirq);
                if (r->set(pirq_router_dev, d, pirq, newirq)) {
+                       eisa_set_level_irq(newirq);
                        DBG(" ... OK\n");
                        msg = "Assigned";
                        irq = newirq;
index 6d3cf4d9a92662f5ff7877f002548be607dc16b1..8e7176c32447f8f03776b3262c6c3dc41c1363df 100644 (file)
@@ -496,9 +496,9 @@ void release_thread(struct task_struct *dead_task)
 void copy_segments(struct task_struct *p, struct mm_struct *new_mm)
 {
        struct mm_struct * old_mm = current->mm;
-       void * old_ldt = old_mm->segments, * ldt = old_ldt;
+       void * old_ldt = old_mm->segments, * ldt;
 
-       if (!old_mm->segments) {
+       if (!old_ldt) {
                /*
                 * default LDT - use the one from init_task
                 */
index 692965a06a064cc93ec12f53509edf068bae7759..7c9dc14fdd4572eeb20eb42c30ddf91a8f140a77 100644 (file)
@@ -2113,7 +2113,7 @@ int get_cpuinfo(char * buffer)
                        p += sprintf(p, "stepping\t: unknown\n");
 
                if ( test_bit(X86_FEATURE_TSC, &c->x86_capability) ) {
-                       p += sprintf(p, "cpu MHz\t\t: %lu.%06lu\n",
+                       p += sprintf(p, "cpu MHz\t\t: %lu.%03lu\n",
                                cpu_khz / 1000, (cpu_khz % 1000));
                }
 
index 528f206ff27558118af8ddbdc5214065316de113..f139fd89a7c3699e4b62bbf0221b3341aec3edce 100644 (file)
@@ -43,11 +43,28 @@ unsigned char amiga_vblank;
 unsigned char amiga_psfreq;
 struct amiga_hw_present amiga_hw_present;
 
-static const char *amiga_models[] = {
-    "A500", "A500+", "A600", "A1000", "A1200", "A2000", "A2500", "A3000",
-    "A3000T", "A3000+", "A4000", "A4000T", "CDTV", "CD32", "Draco"
+static const char s_a500[] __initdata = "A500";
+static const char s_a500p[] __initdata = "A500+";
+static const char s_a600[] __initdata = "A600";
+static const char s_a1000[] __initdata = "A1000";
+static const char s_a1200[] __initdata = "A1200";
+static const char s_a2000[] __initdata = "A2000";
+static const char s_a2500[] __initdata = "A2500";
+static const char s_a3000[] __initdata = "A3000";
+static const char s_a3000t[] __initdata = "A3000T";
+static const char s_a3000p[] __initdata = "A3000+";
+static const char s_a4000[] __initdata = "A4000";
+static const char s_a4000t[] __initdata = "A4000T";
+static const char s_cdtv[] __initdata = "CDTV";
+static const char s_cd32[] __initdata = "CD32";
+static const char s_draco[] __initdata = "Draco";
+static const char *amiga_models[] __initdata = {
+    s_a500, s_a500p, s_a600, s_a1000, s_a1200, s_a2000, s_a2500, s_a3000,
+    s_a3000t, s_a3000p, s_a4000, s_a4000t, s_cdtv, s_cd32, s_draco,
 };
 
+static char amiga_model_name[13] = "Amiga ";
+
 extern char m68k_debug_device[];
 
 static void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *));
@@ -127,6 +144,8 @@ static struct resource rtc_resource = {
     NULL, 0x00dc0000, 0x00dcffff
 };
 
+static struct resource ram_resource[NUM_MEMINFO];
+
 
     /*
      *  Parse an Amiga-specific record in the bootinfo
@@ -200,8 +219,10 @@ static void __init amiga_identify(void)
   memset(&amiga_hw_present, 0, sizeof(amiga_hw_present));
 
   printk("Amiga hardware found: ");
-  if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO)
+  if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) {
     printk("[%s] ", amiga_models[amiga_model-AMI_500]);
+    strcat(amiga_model_name, amiga_models[amiga_model-AMI_500]);
+  }
 
   switch(amiga_model) {
   case AMI_UNKNOWN:
@@ -447,6 +468,17 @@ void __init config_amiga(void)
             disabled_z2mem>>10);
   }
 
+  /* request all RAM */
+  for (i = 0; i < m68k_num_memory; i++) {
+    ram_resource[i].name =
+      (m68k_memory[i].addr >= 0x01000000) ? "32-bit Fast RAM" :
+      (m68k_memory[i].addr < 0x00c00000) ? "16-bit Fast RAM" :
+      "16-bit Slow RAM";
+    ram_resource[i].start = m68k_memory[i].addr;
+    ram_resource[i].end = m68k_memory[i].addr+m68k_memory[i].size-1;
+    request_resource(&iomem_resource, &ram_resource[i]);
+  }
+
   /* initialize chipram allocator */
   amiga_chip_init ();
 
@@ -478,8 +510,11 @@ static unsigned short jiffy_ticks;
 static void __init amiga_sched_init(void (*timer_routine)(int, void *,
                                                          struct pt_regs *))
 {
+       static struct resource sched_res = { "timer" };
        jiffy_ticks = (amiga_eclock+HZ/2)/HZ;
 
+       if (!request_mem_region(CIAB_PHYSADDR+0x400, 0x200, "timer"))
+           printk("Cannot allocate ciab.ta{lo,hi}\n");
        ciab.cra &= 0xC0;   /* turn off timer A, continuous mode, from Eclk */
        ciab.talo = jiffy_ticks % 256;
        ciab.tahi = jiffy_ticks / 256;
@@ -933,9 +968,7 @@ static void amiga_heartbeat(int on)
 
 static void amiga_get_model(char *model)
 {
-    strcpy(model, "Amiga ");
-    if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO)
-       strcat(model, amiga_models[amiga_model-AMI_500]);
+    strcpy(model, amiga_model_name);
 }
 
 
index ef3a627bf895bb7d187ab089f06786b7d293f607..9fb65e320e55276229927b29940cc1ddd617158f 100644 (file)
@@ -484,7 +484,7 @@ A9_str:
        fmovex  (%a0),%fp0      |load X from memory
        fabsx   %fp0            |use abs(X)
        tstw    %d5             |LAMBDA is in lower word of d5
-       bnes    sc_mul          |if neg (LAMBDA = 1), scale by mul
+       bne     sc_mul          |if neg (LAMBDA = 1), scale by mul
        fdivx   %fp1,%fp0               |calculate X / SCALE -> Y to fp0
        bras    A10_st          |branch to A10
 
index af1279a4ab6e69d699e1f31bc193fb3173a5a178..d2bf1b641e121c95a34fc2ac1c6ae25f958d45aa 100644 (file)
@@ -230,7 +230,7 @@ nextlw:
 |
 m_sign:
        btst    #31,(%a0)       |test sign of the mantissa
-       beqs    ap_st_z         |if clear, go to append/strip zeros
+       beq     ap_st_z         |if clear, go to append/strip zeros
        fnegx   %fp0            |if set, negate fp0
        
 |
@@ -288,7 +288,7 @@ ap_st_z:
        cmpl    #27,%d1         |test is with 27
        ble     pwrten          |if abs(expA) <28, skip ap/st zeros
        btst    #30,(%a0)       |check sign of exp
-       bnes    ap_st_n         |if neg, go to neg side
+       bne     ap_st_n         |if neg, go to neg side
        clrl    %d1             |zero count reg
        movel   (%a0),%d4               |load lword 1 to d4
        bfextu  %d4{#28:#4},%d0 |get M16 in d0
@@ -336,7 +336,7 @@ ap_p_en:
        tstl    %d0             |check if d0 is zero
        bnes    ap_p_el         |if not, get next bit
        fmulx   %fp1,%fp0               |mul mantissa by 10**(no_bits_shifted)
-       bras    pwrten          |go calc pwrten
+       bra     pwrten          |go calc pwrten
 |
 | This section handles a negative adjusted exponent.
 |
index 2df0c370013025d0439e8212ed4d9a81ea6a34b2..0a9c776f004a46ff3373761668efd097e31ba2fe 100644 (file)
@@ -77,7 +77,7 @@ not_fmovecr:
        movew   CMDREG1B(%a6),%d0
        andl    #0x7F,%d0
        cmpil   #0x38,%d0               |if the extension is >= $38, 
-       bges    serror          |it is illegal
+       bge     serror          |it is illegal
        bfextu  STAG(%a6){#0:#3},%d1
        lsll    #3,%d0          |make room for STAG
        addl    %d1,%d0         |combine for final index into table
index 2bd236d455f620d08248319ee07e8195d78f444f..480405d4ff304cffe038ea81d85073e4088a2d89 100644 (file)
@@ -171,7 +171,7 @@ PTENRP:
 get_op:
        clrb    DY_MO_FLG(%a6)
        tstb    UFLG_TMP(%a6)   |test flag for unsupp/unimp state
-       beqs    uni_getop
+       beq     uni_getop
 
 uns_getop:
        btstb   #direction_bit,CMDREG1B(%a6)
index e59b352ab7dc5a3eca1716027ffdd4e1819dff74..cc9ae013b038a856b616c972ffeb97b5b9bb240a 100644 (file)
@@ -138,20 +138,20 @@ ovf_e1_exc:
 |
 ovf_fsgl:
        clrl    %d0
-       bras    ovf_res
+       bra     ovf_res
 
 ovff_sgl:
        movel   #0x00000001,%d0         |set single
-       bras    ovf_res
+       bra     ovf_res
 ovff_dbl:
        movel   #0x00000002,%d0         |set double
-       bras    ovf_res
+       bra     ovf_res
 |
 | The precision is in the fpcr.
 |
 ovf_fpcr:
        bfextu  FPCR_MODE(%a6){#0:#2},%d0 |set round precision
-       bras    ovf_res
+       bra     ovf_res
        
 |
 |
index a3468f3386e98bd7ce62749dc481a49e55285771..b3357fd658b5347bfabdaa39b65eaefea65df0d9 100644 (file)
@@ -92,7 +92,7 @@ opc011:
        cmpil   #0,%d0          |if dest format is extended
        beq     dest_ext        |then branch
        cmpil   #1,%d0          |if dest format is single
-       beqs    dest_sgl        |then branch
+       beq     dest_sgl        |then branch
 |
 |      fall through to dest_dbl
 |
index 4bbf86f96a65bf5e2d7ce1bc2a1df9e7c3a8783f..037aa6c00e32cafc0ab99a695638fc160929c7d6 100644 (file)
 |
        .global         _060_dmem_write
 _060_dmem_write:
+       subq.l          #1,%d0
        btst            #0x5,0x4(%a6)           | check for supervisor state
        beqs            user_write
 super_write:
        move.b          (%a0)+,(%a1)+           | copy 1 byte
-       subq.l          #0x1,%d0                | decr byte counter
-       bnes            super_write             | quit if ctr = 0
+       dbra            %d0,super_write         | quit if --ctr < 0
        clr.l           %d1                     | return success
        rts
 user_write:
-       move.l          %d0,-(%sp)              | pass: counter
-       move.l          %a1,-(%sp)              | pass: user dst
-       move.l          %a0,-(%sp)              | pass: supervisor src
-       bsr.l           _copyout                | write byte to user mem
-       move.l          %d0,%d1                 | return success
-       add.l           #0xc, %sp               | clear 3 lw params
+       move.b          (%a0)+,%d1              | copy 1 byte
+copyoutae:
+       movs.b          %d1,(%a1)+
+       dbra            %d0,user_write          | quit if --ctr < 0
+       clr.l           %d1                     | return success
        rts
 
 |
@@ -119,21 +118,20 @@ user_write:
        .global         _060_dmem_read
 _060_imem_read:
 _060_dmem_read:
+       subq.l          #1,%d0
        btst            #0x5,0x4(%a6)           | check for supervisor state
        beqs            user_read
 super_read:
        move.b          (%a0)+,(%a1)+           | copy 1 byte
-       subq.l          #0x1,%d0                | decr byte counter
-       bnes            super_read              | quit if ctr = 0
+       dbra            %d0,super_read          | quit if --ctr < 0
        clr.l           %d1                     | return success
        rts
 user_read:
-       move.l          %d0,-(%sp)              | pass: counter
-       move.l          %a1,-(%sp)              | pass: super dst
-       move.l          %a0,-(%sp)              | pass: user src
-       bsr.l           _copyin                 | read byte from user mem
-       move.l          %d0,%d1                 | return success
-       add.l           #0xc,%sp                | clear 3 lw params
+copyinae:
+       movs.b          (%a0)+,%d1
+       move.b          %d1,(%a1)+              | copy 1 byte
+       dbra            %d0,user_read           | quit if --ctr < 0
+       clr.l           %d1                     | return success
        rts
 
 |
@@ -150,14 +148,13 @@ user_read:
 |
        .global                 _060_dmem_read_byte
 _060_dmem_read_byte:
+       clr.l           %d0                     | clear whole longword
+       clr.l           %d1                     | assume success
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmrbs                   | supervisor
-dmrbu: clr.l           %d0                     | clear whole longword
 dmrbuae:movs.b         (%a0),%d0               | fetch user byte
-       bras            dmrbr
-dmrbs: clr.l           %d0                     | clear whole longword
-       move.b          (%a0),%d0               | fetch super byte
-dmrbr: clr.l           %d1                     | return success
+       rts
+dmrbs: move.b          (%a0),%d0               | fetch super byte
        rts
 
 |
@@ -187,14 +184,13 @@ dmrbr:    clr.l           %d1                     | return success
        .global                 _060_imem_read_word
 _060_dmem_read_word:
 _060_imem_read_word:
+       clr.l           %d1                     | assume success
+       clr.l           %d0                     | clear whole longword
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmrws                   | supervisor
-dmrwu: clr.l           %d0                     | clear whole longword
 dmrwuae:movs.w         (%a0), %d0              | fetch user word
-       bras            dmrwr
-dmrws: clr.l           %d0                     | clear whole longword
-       move.w          (%a0), %d0              | fetch super word
-dmrwr: clr.l           %d1                     | return success
+       rts
+dmrws: move.w          (%a0), %d0              | fetch super word
        rts
 
 |
@@ -224,13 +220,12 @@ dmrwr:    clr.l           %d1                     | return success
        .global                 _060_imem_read_long
 _060_dmem_read_long:
 _060_imem_read_long:
+       clr.l           %d1                     | assume success
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmrls                   | supervisor
-dmrlu:
 dmrluae:movs.l         (%a0),%d0               | fetch user longword
-       bras            dmrlr
+       rts
 dmrls: move.l          (%a0),%d0               | fetch super longword
-dmrlr: clr.l           %d1                     | return success
        rts
 
 |
@@ -247,13 +242,12 @@ dmrlr:    clr.l           %d1                     | return success
 |
        .global                 _060_dmem_write_byte
 _060_dmem_write_byte:
+       clr.l           %d1                     | assume success
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmwbs                   | supervisor
-dmwbu:
 dmwbuae:movs.b         %d0,(%a0)               | store user byte
-       bras            dmwbr
+       rts
 dmwbs: move.b          %d0,(%a0)               | store super byte
-dmwbr: clr.l           %d1                     | return success
        rts
 
 |
@@ -270,6 +264,7 @@ dmwbr:      clr.l           %d1                     | return success
 |
        .global                 _060_dmem_write_word
 _060_dmem_write_word:
+       clr.l           %d1                     | assume success
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmwws                   | supervisor
 dmwwu:
@@ -293,16 +288,16 @@ dmwwr:    clr.l           %d1                     | return success
 |
        .global                 _060_dmem_write_long
 _060_dmem_write_long:
+       clr.l           %d1                     | assume success
        btst            #0x5,0x4(%a6)           | check for supervisor state
        bnes            dmwls                   | supervisor
-dmwlu:
 dmwluae:movs.l         %d0,(%a0)               | store user longword
-       bra             dmwlr
+       rts
 dmwls: move.l          %d0,(%a0)               | store super longword
-dmwlr: clr.l           %d1                     | return success
        rts
 
 
+#if 0
 |###############################################
 
 |
@@ -323,7 +318,7 @@ _copyout:
        move.l          4(%sp),%a0              | source
        move.l          8(%sp),%a1              | destination
        move.l          12(%sp),%d0             | count
-    subq.l      #1,%d0
+       subq.l          #1,%d0
 moreout:
        move.b          (%a0)+,%d1              | fetch supervisor byte
 copyoutae:
@@ -348,6 +343,7 @@ copyinae:
        dbra            %d0,morein              | are we through yet?
        moveq           #0,%d0                  | return success
        rts
+#endif
 
 |###########################################################################
 
index 165809c56563f8b18286510be7006234dfca49f7..20bb8e1293669e001c9c7561c3b50b5cd9dce1f2 100644 (file)
@@ -28,6 +28,9 @@
  * 12/03/96 Jes: Currently we only support m68k single-cpu systems, so
  *               all pointers that used to be 'current' are now entry
  *               number 0 in the 'current_set' list.
+ *
+ *  6/05/00 RZ:         addedd writeback completion after return from sighandler
+ *              for 68040
  */
 
 #include <linux/sys.h>
@@ -104,8 +107,18 @@ do_trace:
        jbsr    SYMBOL_NAME(syscall_trace)
 
 SYMBOL_NAME_LABEL(ret_from_signal)
-       RESTORE_SWITCH_STACK
+       RESTORE_SWITCH_STACK 
        addql   #4,%sp
+/* on 68040 complete pending writebacks if any */      
+#ifdef CONFIG_M68040
+       bfextu  %sp@(PT_VECTOR){#0,#4},%d0  
+       subql   #7,%d0                          | bus error frame ?
+       jbne    1f
+       movel   %sp,%sp@-
+       jbsr    SYMBOL_NAME(berr_040cleanup)
+       addql   #4,%sp
+1:     
+#endif 
        jra     SYMBOL_NAME(ret_from_exception)
 
 ENTRY(system_call)
@@ -578,7 +591,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
        .long SYMBOL_NAME(sys_mremap)
        .long SYMBOL_NAME(sys_setresuid16)
        .long SYMBOL_NAME(sys_getresuid16)      /* 165 */
-       .long SYMBOL_NAME(sys_ni_syscall)       /* for vm86 */
+       .long SYMBOL_NAME(sys_getpagesize)
        .long SYMBOL_NAME(sys_query_module)
        .long SYMBOL_NAME(sys_poll)
        .long SYMBOL_NAME(sys_nfsservctl)
index 74e1e4c1e260af0bcfcc6a025451a365d6030f16..805ce9b83e7f39749a41c0f4bf5969c2094fbb6c 100644 (file)
@@ -71,6 +71,8 @@ int (*mach_request_irq) (unsigned int, void (*)(int, void *, struct pt_regs *),
                       unsigned long, const char *, void *) = dummy_request_irq;
 void (*mach_free_irq) (unsigned int, void *) = dummy_free_irq;
 
+void init_irq_proc(void);
+
 /*
  * void init_IRQ(void)
  *
@@ -257,3 +259,9 @@ int get_irq_list(char *buf)
        len += mach_get_irq_list(buf+len);
        return len;
 }
+
+void init_irq_proc(void)
+{
+       /* Insert /proc/irq driver here */
+}
+
index 7bf46149fe5934e7c3ef4ed584979b132936f319..35d194623ed7839c2826cba7c38f4fb661af7e95 100644 (file)
@@ -21,6 +21,7 @@
 
 asmlinkage long long __ashrdi3 (long long, int);
 asmlinkage long long __lshrdi3 (long long, int);
+asmlinkage long long __muldi3 (long long, long long);
 extern char m68k_debug_device[];
 
 extern void dump_thread(struct pt_regs *, struct user *);
@@ -72,6 +73,7 @@ EXPORT_SYMBOL_NOVERS(memcpy);
 EXPORT_SYMBOL_NOVERS(memset);
 EXPORT_SYMBOL_NOVERS(memcmp);
 EXPORT_SYMBOL_NOVERS(memscan);
+EXPORT_SYMBOL_NOVERS(__muldi3);
 
 EXPORT_SYMBOL_NOVERS(__down_failed);
 EXPORT_SYMBOL_NOVERS(__down_failed_interruptible);
index 86637d4d65711ccb69c2bf42a272d4e4ac66e2fe..f7386cbc6e8e5666a4b1b5a2a219ff25080874d5 100644 (file)
@@ -24,6 +24,7 @@
 #include <asm/cachectl.h>
 #include <asm/traps.h>
 #include <asm/ipc.h>
+#include <asm/page.h>
 
 /*
  * sys_pipe() is the normal C calling standard for creating
@@ -661,6 +662,11 @@ out:
        return ret;
 }
 
+asmlinkage int sys_getpagesize(void)
+{
+       return PAGE_SIZE;
+}
+
 /*
  * Old cruft
  */
index 5fd9dc0a7a8a083bb33a38ee7dccb8f188d534b5..a4c0cea5588e43e215aeaf710d3f603babdb34d6 100644 (file)
@@ -5,6 +5,7 @@
  *
  *  68040 fixes by Michael Rausch
  *  68040 fixes by Martin Apel
+ *  68040 fixes and writeback by Richard Zidlicky
  *  68060 fixes by Roman Hodek
  *  68060 fixes by Jesper Skov
  *
@@ -195,6 +196,7 @@ static char *space_names[] = {
 void die_if_kernel(char *,struct pt_regs *,int);
 asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
                              unsigned long error_code);
+int send_fault_sig(struct pt_regs *regs);
 
 asmlinkage void trap_c(struct frame *fp);
 
@@ -214,26 +216,33 @@ static inline void access_error060 (struct frame *fp)
                                      "movec %/d0,%/cacr"
                                      : : : "d0" );
                /* return if there's no other error */
-               if ((!(fslw & MMU060_ERR_BITS)) && !(fslw & MMU060_SEE))
+               if (!(fslw & MMU060_ERR_BITS) && !(fslw & MMU060_SEE))
                        return;
        }
 
        if (fslw & (MMU060_DESC_ERR | MMU060_WP | MMU060_SP)) {
                unsigned long errorcode;
                unsigned long addr = fp->un.fmt4.effaddr;
-               errorcode = ((fslw & MMU060_WP) ? 1 : 0) |
-                                       ((fslw & MMU060_W)  ? 2 : 0);
+
+               if (fslw & MMU060_MA)
+                       addr = (addr + 7) & -8;
+
+               errorcode = 1;
+               if (fslw & MMU060_DESC_ERR) {
+                       __flush_tlb040_one(addr);
+                       errorcode = 0;
+               }
+               if (fslw & MMU060_W)
+                       errorcode |= 2;
 #ifdef DEBUG
                printk("errorcode = %d\n", errorcode );
 #endif
-               if (fslw & MMU060_MA)
-                       addr = PAGE_ALIGN(addr);
                do_page_fault(&fp->ptregs, addr, errorcode);
        } else if (fslw & (MMU060_SEE)){
-               /* Software Emulation Error. Probably an instruction
-                * using an unsupported addressing mode
+               /* Software Emulation Error.
+                * fault during mem_read/mem_write in ifpsp060/os.S
                 */
-               send_sig (SIGSEGV, current, 1);
+               send_fault_sig(&fp->ptregs);
        } else {
                printk("pc=%#lx, fa=%#lx\n", fp->ptregs.pc, fp->un.fmt4.effaddr);
                printk( "68060 access error, fslw=%lx\n", fslw );
@@ -243,74 +252,113 @@ static inline void access_error060 (struct frame *fp)
 #endif /* CONFIG_M68060 */
 
 #if defined (CONFIG_M68040)
-static inline unsigned long probe040 (int iswrite, int fc, unsigned long addr)
+static inline unsigned long probe040(int iswrite, unsigned long addr)
 {
        unsigned long mmusr;
-       mm_segment_t fs = get_fs();
 
-       set_fs (MAKE_MM_SEG(fc));
+       asm volatile (".chip 68040");
 
        if (iswrite)
-               /* write */
-               asm volatile (".chip 68040\n\t"
-                             "ptestw (%1)\n\t"
-                             "movec %%mmusr,%0\n\t"
-                             ".chip 68k"
-                             : "=r" (mmusr)
-                             : "a" (addr));
+               asm volatile ("ptestw (%0)" : : "a" (addr));
        else
-               asm volatile (".chip 68040\n\t"
-                             "ptestr (%1)\n\t"
-                             "movec %%mmusr,%0\n\t"
-                             ".chip 68k"
-                             : "=r" (mmusr)
-                             : "a" (addr));
+               asm volatile ("ptestr (%0)" : : "a" (addr));
+
+       asm volatile ("movec %%mmusr,%0" : "=r" (mmusr));
 
-       set_fs (fs);
+       asm volatile (".chip 68k");
 
        return mmusr;
 }
 
-static inline void do_040writeback (unsigned short ssw,
-                            unsigned short wbs,
-                            unsigned long wba,
-                            unsigned long wbd,
-                            struct frame *fp)
+static inline int do_040writeback1(unsigned short wbs, unsigned long wba,
+                                  unsigned long wbd)
 {
-       mm_segment_t fs = get_fs ();
-       unsigned long mmusr;
-       unsigned long errorcode;
+       int res = 0;
 
-       /*
-        * No special handling for the second writeback anymore.
-        * It misinterpreted the misaligned status sometimes.
-        * This way an extra page-fault may be caused (Martin Apel).
-        */
-
-       mmusr = probe040 (1, wbs & WBTM_040,  wba);
-       errorcode = (mmusr & MMU_R_040) ? 3 : 2;
-       if (do_page_fault (&fp->ptregs, wba, errorcode))
-         /* just return if we can't perform the writeback */
-         return;
+       set_fs(MAKE_MM_SEG(wbs));
 
-       set_fs (MAKE_MM_SEG(wbs & WBTM_040));
        switch (wbs & WBSIZ_040) {
-           case BA_SIZE_BYTE:
-               put_user (wbd & 0xff, (char *)wba);
+       case BA_SIZE_BYTE:
+               res = put_user(wbd & 0xff, (char *)wba);
                break;
-           case BA_SIZE_WORD:
-               put_user (wbd & 0xffff, (short *)wba);
+       case BA_SIZE_WORD:
+               res = put_user(wbd & 0xffff, (short *)wba);
                break;
-           case BA_SIZE_LONG:
-               put_user (wbd, (int *)wba);
+       case BA_SIZE_LONG:
+               res = put_user(wbd, (int *)wba);
                break;
        }
-       set_fs (fs);
+
+#ifdef DEBUG
+       printk("do_040writeback1, res=%d\n",res);
+#endif
+
+       return res;
+}
+
+/* after an exception in a writeback the stack frame coresponding
+ * to that exception is discarded, set a few bits in the old frame 
+ * to simulate what it should look like
+ */
+static inline void fix_xframe040(struct frame *fp, unsigned short wbs)
+{
+       fp->un.fmt7.faddr = current->thread.faddr;
+       fp->un.fmt7.ssw = wbs & 0xff;
+}
+
+static inline void do_040writebacks(struct frame *fp)
+{
+       int res = 0;
+#if 0
+       if (fp->un.fmt7.wb1s & WBV_040)
+               printk("access_error040: cannot handle 1st writeback. oops.\n");
+#endif
+
+       if ((fp->un.fmt7.wb2s & WBV_040) &&
+           !(fp->un.fmt7.wb2s & WBTT_040)) {
+               res = do_040writeback1(fp->un.fmt7.wb2s, fp->un.fmt7.wb2a,
+                                      fp->un.fmt7.wb2d);
+               if (res)
+                       fix_xframe040(fp, fp->un.fmt7.wb2s);
+               else 
+                       fp->un.fmt7.wb2s = 0;
+       }
+
+       /* do the 2nd wb only if the first one was succesful (except for a kernel wb) */
+       if (fp->un.fmt7.wb3s & WBV_040 && (!res || fp->un.fmt7.wb3s & 4)) {
+               res = do_040writeback1(fp->un.fmt7.wb3s, fp->un.fmt7.wb3a,
+                                      fp->un.fmt7.wb3d);
+               if (res)
+                       fix_xframe040(fp, fp->un.fmt7.wb3s);
+               else
+                       fp->un.fmt7.wb3s = 0;
+       }
+
+       if (res)
+               send_fault_sig(&fp->ptregs);
+}
+
+/*
+ * called from sigreturn(), must ensure userspace code didn't
+ * manipulate exception frame to circumvent protection, then complete
+ * pending writebacks
+ * we just clear TM2 to turn it into an userspace access
+ */
+asmlinkage void berr_040cleanup(struct frame *fp)
+{
+       mm_segment_t old_fs = get_fs();
+
+       fp->un.fmt7.wb2s &= ~4;
+       fp->un.fmt7.wb3s &= ~4;
+
+       do_040writebacks(fp);
+       set_fs(old_fs);
 }
 
-static inline void access_error040 (struct frame *fp)
+static inline void access_error040(struct frame *fp)
 {
        unsigned short ssw = fp->un.fmt7.ssw;
+       mm_segment_t old_fs = get_fs();
        unsigned long mmusr;
 
 #ifdef DEBUG
@@ -322,7 +370,6 @@ static inline void access_error040 (struct frame *fp)
                fp->un.fmt7.wb2d, fp->un.fmt7.wb3d);
 #endif
 
-
        if (ssw & ATC_040) {
                unsigned long addr = fp->un.fmt7.faddr;
                unsigned long errorcode;
@@ -332,56 +379,50 @@ static inline void access_error040 (struct frame *fp)
                 * has been corrected if there was a misaligned access (MA).
                 */
                if (ssw & MA_040)
-                       addr = PAGE_ALIGN (addr);
+                       addr = (addr + 7) & -8;
 
+               set_fs(MAKE_MM_SEG(ssw));
                /* MMU error, get the MMUSR info for this access */
-               mmusr = probe040 (!(ssw & RW_040), ssw & TM_040, addr);
+               mmusr = probe040(!(ssw & RW_040), addr);
 #ifdef DEBUG
                printk("mmusr = %lx\n", mmusr);
 #endif
-               errorcode = ((mmusr & MMU_R_040) ? 1 : 0) |
-                       ((ssw & RW_040) ? 0 : 2);
-#ifdef CONFIG_FTRACE
-               {
-                       unsigned long flags;
-
-                       save_flags(flags);
-                       cli();
-                       do_ftrace(0xfa000000 | errorcode);
-                       do_ftrace(mmusr);
-                       restore_flags(flags);
+               errorcode = 1;
+               if (!(mmusr & MMU_R_040)) {
+                       /* clear the invalid atc entry */
+                       __flush_tlb040_one(addr);
+                       errorcode = 0;
                }
+               if (!(ssw & RW_040))
+                       errorcode |= 2;
+               if (do_page_fault(&fp->ptregs, addr, errorcode)) {
+#ifdef DEBUG
+                       printk("do_page_fault() !=0 \n");
 #endif
-               do_page_fault (&fp->ptregs, addr, errorcode);
+                       if (user_mode(&fp->ptregs)){
+                               /* delay writebacks after signal delivery */
+#ifdef DEBUG
+                               printk(".. was usermode - return\n");
+#endif
+                               return;
+                       }
+                       /* disable writeback into user space from kernel
+                        * (if do_page_fault didn't fix the mapping,
+                         * the writeback won't do good)
+                        */
+#ifdef DEBUG
+                       printk(".. disabling wb2\n");
+#endif
+                       if (fp->un.fmt7.wb2a == fp->un.fmt7.faddr)
+                               fp->un.fmt7.wb2s &= ~WBV_040;
+               }
        } else {
-               printk ("68040 access error, ssw=%x\n", ssw);
-               trap_c (fp);
+               printk("68040 access error, ssw=%x\n", ssw);
+               trap_c(fp);
        }
 
-#if 0
-       if (fp->un.fmt7.wb1s & WBV_040)
-               printk("access_error040: cannot handle 1st writeback. oops.\n");
-#endif
-
-/*
- *  We may have to do a couple of writebacks here.
- *
- *  MR: we can speed up the thing a little bit and let do_040writeback()
- *  not produce another page fault as wb2 corresponds to the address that
- *  caused the fault. on write faults no second fault is generated, but
- *  on read faults for security reasons (although per definitionem impossible)
- */
-
-       if (fp->un.fmt7.wb2s & WBV_040 && (fp->un.fmt7.wb2s &
-                                          WBTT_040) != BA_TT_MOVE16)
-               do_040writeback (ssw,
-                                fp->un.fmt7.wb2s, fp->un.fmt7.wb2a,
-                                fp->un.fmt7.wb2d, fp);
-
-       if (fp->un.fmt7.wb3s & WBV_040)
-               do_040writeback (ssw, fp->un.fmt7.wb3s,
-                                fp->un.fmt7.wb3a, fp->un.fmt7.wb3d,
-                                fp);
+       do_040writebacks(fp);
+       set_fs(old_fs);
 }
 #endif /* CONFIG_M68040 */
 
@@ -470,12 +511,14 @@ extern inline void bus_error030 (struct frame *fp)
                else if (buserr_type & SUN3_BUSERR_INVALID)
                        errorcode = 0x00;
                else {
+#ifdef DEBUG
                        printk ("*** unexpected busfault type=%#04x\n", buserr_type);
                        printk ("invalid %s access at %#lx from pc %#lx\n",
                                !(ssw & RW) ? "write" : "read", addr,
                                fp->ptregs.pc);
+#endif
                        die_if_kernel ("Oops", &fp->ptregs, buserr_type);
-                       force_sig (SIGSEGV, current);
+                       force_sig (SIGBUS, current);
                        return;
                }
 
@@ -596,7 +639,7 @@ static inline void bus_error030 (struct frame *fp)
            printk ("mmusr is %#x for addr %#lx in task %p\n",
                    mmusr, addr, current);
            printk ("descriptor address is %#lx, contents %#lx\n",
-                   mm_ptov(desc), *(unsigned long *)mm_ptov(desc));
+                   __va(desc), *(unsigned long *)__va(desc));
 #endif
 
            errorcode = (mmusr & MMU_I) ? 0 : 1;
@@ -694,7 +737,7 @@ static inline void bus_error030 (struct frame *fp)
        printk ("mmusr is %#x for addr %#lx in task %p\n",
                mmusr, addr, current);
        printk ("descriptor address is %#lx, contents %#lx\n",
-               mm_ptov(desc), *(unsigned long *)mm_ptov(desc));
+               __va(desc), *(unsigned long *)__va(desc));
 #endif
 
        if (mmusr & MMU_I)
index b9480aeb619a8babc9c71e19ac5729553d564921..a230bad9ed7319b6d026b01997fc363dc8f02a5d 100644 (file)
@@ -6,6 +6,6 @@
        $(CC) $(AFLAGS) -traditional -c $< -o $@
 
 L_TARGET = lib.a
-L_OBJS  = ashrdi3.o lshrdi3.o checksum.o memcpy.o memcmp.o memset.o semaphore.o
+L_OBJS  = ashrdi3.o lshrdi3.o checksum.o memcpy.o memcmp.o memset.o semaphore.o muldi3.o
 
 include $(TOPDIR)/Rules.make
diff --git a/arch/m68k/lib/muldi3.c b/arch/m68k/lib/muldi3.c
new file mode 100644 (file)
index 0000000..9ea8812
--- /dev/null
@@ -0,0 +1,63 @@
+/* muldi3.c extracted from gcc-2.7.2.3/libgcc2.c and 
+                          gcc-2.7.2.3/longlong.h which is: */
+/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC 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, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#define BITS_PER_UNIT 8
+
+#define umul_ppmm(w1, w0, u, v) \
+  __asm__ ("mulu%.l %3,%1:%0"                                          \
+           : "=d" ((USItype)(w0)),                                     \
+             "=d" ((USItype)(w1))                                      \
+           : "%0" ((USItype)(u)),                                      \
+             "dmi" ((USItype)(v)))
+
+#define __umulsidi3(u, v) \
+  ({DIunion __w;                                                       \
+    umul_ppmm (__w.s.high, __w.s.low, u, v);                           \
+    __w.ll; })
+
+typedef         int SItype     __attribute__ ((mode (SI)));
+typedef unsigned int USItype   __attribute__ ((mode (SI)));
+typedef                 int DItype     __attribute__ ((mode (DI)));
+typedef int word_type __attribute__ ((mode (__word__)));
+
+struct DIstruct {SItype high, low;};
+
+typedef union
+{
+  struct DIstruct s;
+  DItype ll;
+} DIunion;
+
+DItype
+__muldi3 (DItype u, DItype v)
+{
+  DIunion w;
+  DIunion uu, vv;
+
+  uu.ll = u,
+  vv.ll = v;
+
+  w.ll = __umulsidi3 (uu.s.low, vv.s.low);
+  w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high
+              + (USItype) uu.s.high * (USItype) vv.s.low);
+
+  return w.ll;
+}
index 3eba3d13b703f0ad5fc741f305107de007a2ef8a..8dc87ebc1d1e86559a3bb30de18c984d944f4882 100644 (file)
 extern void die_if_kernel(char *, struct pt_regs *, long);
 extern const int frame_extra_sizes[]; /* in m68k/kernel/signal.c */
 
+int send_fault_sig(struct pt_regs *regs)
+{
+       siginfo_t siginfo = { 0, 0, 0, };
+
+       siginfo.si_signo = current->thread.signo;
+       siginfo.si_code = current->thread.code;
+       siginfo.si_addr = (void *)current->thread.faddr;
+       printk("send_fault_sig: %p,%d,%d\n", siginfo.si_addr, siginfo.si_signo, siginfo.si_code);
+
+       if (user_mode(regs)) {
+               force_sig_info(siginfo.si_signo,
+                              &siginfo, current);
+       } else {
+               unsigned long fixup;
+
+               /* Are we prepared to handle this kernel fault? */
+               if ((fixup = search_exception_table(regs->pc))) {
+                       struct pt_regs *tregs;
+                       /* Create a new four word stack frame, discarding the old
+                          one.  */
+                       regs->stkadj = frame_extra_sizes[regs->format];
+                       tregs = (struct pt_regs *)((ulong)regs + regs->stkadj);
+                       tregs->vector = regs->vector;
+                       tregs->format = 0;
+                       tregs->pc = fixup;
+                       tregs->sr = regs->sr;
+                       return -1;
+               }
+
+               //if (siginfo.si_signo == SIGBUS)
+               //      force_sig_info(siginfo.si_signo,
+               //                     &siginfo, current);
+
+               /*
+                * Oops. The kernel tried to access some bad page. We'll have to
+                * terminate things with extreme prejudice.
+                */
+               if ((unsigned long)siginfo.si_addr < PAGE_SIZE)
+                       printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
+               else
+                       printk(KERN_ALERT "Unable to handle kernel access");
+               printk(" at virtual address %p\n", siginfo.si_addr);
+               die_if_kernel("Oops", regs, 0 /*error_code*/);
+               do_exit(SIGKILL);
+       }
+
+       return 1;
+}
+
 /*
  * This routine handles page faults.  It determines the problem, and
  * then passes it off to one of the appropriate routines.
@@ -30,16 +79,15 @@ extern const int frame_extra_sizes[]; /* in m68k/kernel/signal.c */
  * If this routine detects a bad access, it returns 1, otherwise it
  * returns 0.
  */
-asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
+int do_page_fault(struct pt_regs *regs, unsigned long address,
                              unsigned long error_code)
 {
        struct mm_struct *mm = current->mm;
        struct vm_area_struct * vma;
-       unsigned long fixup;
        int write, fault;
 
 #ifdef DEBUG
-       printk ("regs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
+       printk ("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
                regs->sr, regs->pc, address, error_code,
                current->mm->pgd);
 #endif
@@ -55,43 +103,46 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
 
        vma = find_vma(mm, address);
        if (!vma)
-               goto bad_area;
+               goto map_err;
        if (vma->vm_flags & VM_IO)
-               goto bad_area;
+               goto acc_err;
        if (vma->vm_start <= address)
                goto good_area;
        if (!(vma->vm_flags & VM_GROWSDOWN))
-               goto bad_area;
+               goto map_err;
        if (user_mode(regs)) {
                /* Accessing the stack below usp is always a bug.  The
                   "+ 256" is there due to some instructions doing
                   pre-decrement on the stack and that doesn't show up
                   until later.  */
                if (address + 256 < rdusp())
-                       goto bad_area;
+                       goto map_err;
        }
        if (expand_stack(vma, address))
-               goto bad_area;
+               goto map_err;
 
 /*
  * Ok, we have a good vm_area for this memory access, so
  * we can handle it..
  */
 good_area:
+#ifdef DEBUG
+       printk("do_page_fault: good_area\n");
+#endif
        write = 0;
        switch (error_code & 3) {
                default:        /* 3: write, present */
                        /* fall through */
                case 2:         /* write, not present */
                        if (!(vma->vm_flags & VM_WRITE))
-                               goto bad_area;
+                               goto acc_err;
                        write++;
                        break;
                case 1:         /* read, present */
-                       goto bad_area;
+                       goto acc_err;
                case 0:         /* read, not present */
                        if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
-                               goto bad_area;
+                               goto acc_err;
        }
 
        /*
@@ -100,87 +151,56 @@ good_area:
         * the fault.
         */
        fault = handle_mm_fault(mm, vma, address, write);
+#ifdef DEBUG
+       printk("handle_mm_fault returns %d\n",fault);
+#endif
        if (fault < 0)
                goto out_of_memory;
        if (!fault)
-               goto do_sigbus;
+               goto bus_err;
 
        /* There seems to be a missing invalidate somewhere in do_no_page.
         * Until I found it, this one cures the problem and makes
         * 1.2 run on the 68040 (Martin Apel).
         */
+       #warning should be obsolete now...
        if (CPU_IS_040_OR_060)
                flush_tlb_page(vma, address);
        up(&mm->mmap_sem);
        return 0;
 
-/*
- * Something tried to access memory that isn't in our memory map..
- * Fix it, but check if it's kernel or user first..
- */
-bad_area:
-       up(&mm->mmap_sem);
-
-       /* User mode accesses just cause a SIGSEGV */
-       if (user_mode(regs)) {
-               siginfo_t info;
-               info.si_signo = SIGSEGV;
-               info.si_code = SEGV_MAPERR;
-               info.si_addr = (void *)address;
-               force_sig_info(SIGSEGV, &info, current);
-               return 1;
-       }
-
-no_context:
-       /* Are we prepared to handle this kernel fault?  */
-       if ((fixup = search_exception_table(regs->pc)) != 0) {
-               struct pt_regs *tregs;
-               /* Create a new four word stack frame, discarding the old
-                  one.  */
-               regs->stkadj = frame_extra_sizes[regs->format];
-               tregs = (struct pt_regs *)((ulong)regs + regs->stkadj);
-               tregs->vector = regs->vector;
-               tregs->format = 0;
-               tregs->pc = fixup;
-               tregs->sr = regs->sr;
-               return -1;
-       }
-
-/*
- * Oops. The kernel tried to access some bad page. We'll have to
- * terminate things with extreme prejudice.
- */
-       if ((unsigned long) address < PAGE_SIZE) {
-               printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
-       } else
-               printk(KERN_ALERT "Unable to handle kernel access");
-       printk(" at virtual address %08lx\n",address);
-       die_if_kernel("Oops", regs, error_code);
-       do_exit(SIGKILL);
-
 /*
  * We ran out of memory, or some other thing happened to us that made
  * us unable to handle the page fault gracefully.
  */
 out_of_memory:
-       up(&mm->mmap_sem);
        printk("VM: killing process %s\n", current->comm);
-       if (error_code & 4)
+       if (user_mode(regs))
                do_exit(SIGKILL);
-       goto no_context;
 
-do_sigbus:
+no_context:
+       current->thread.signo = SIGBUS;
+       current->thread.faddr = address;
+       return send_fault_sig(regs);
+
+bus_err:
+       current->thread.signo = SIGBUS;
+       current->thread.code = BUS_ADRERR;
+       current->thread.faddr = address;
+       goto send_sig;
+
+map_err:
+       current->thread.signo = SIGSEGV;
+       current->thread.code = SEGV_MAPERR;
+       current->thread.faddr = address;
+       goto send_sig;
+
+acc_err:
+       current->thread.signo = SIGSEGV;
+       current->thread.code = SEGV_ACCERR;
+       current->thread.faddr = address;
+
+send_sig:
        up(&mm->mmap_sem);
-
-       /*
-        * Send a sigbus, regardless of whether we were in kernel
-        * or user mode.
-        */
-       force_sig(SIGBUS, current);
-
-       /* Kernel mode? Handle exceptions or die */
-       if (!user_mode(regs))
-               goto no_context;
-
-       return 1;
+       return send_fault_sig(regs);
 }
index d48a0201bf3c854038b74c9d0286b12502c2a9bf..06ffa5692e92fe8fdae3813191df37773175ef6e 100644 (file)
@@ -201,15 +201,6 @@ int mvme147_keyb_init (void)
 
 /*-------------------  Serial console stuff ------------------------*/
 
-void m147_scc_write(struct console *co, const char *str, unsigned cnt);
-
-
-void mvme147_init_console_port (struct console *co, int cflag)
-{
-       co->write = m147_scc_write;
-}
-
-
 static void scc_delay (void)
 {
        int n;
@@ -250,3 +241,31 @@ void m147_scc_write (struct console *co, const char *str, unsigned count)
        restore_flags(flags);
 }
 
+
+static int m147_scc_wait_key (struct console *co)
+{
+       volatile unsigned char *p = (volatile char *)M147_SCC_A_ADDR;
+       unsigned long   flags;
+       int             c;
+
+       /* wait for rx buf filled */
+       while ((*p & 0x01) == 0)
+               ;
+
+       save_flags(flags);
+       cli();
+
+       *p = 8;
+       scc_delay();
+       c = *p;
+
+       restore_flags(flags);
+       return c;
+}
+
+
+void mvme147_init_console_port (struct console *co, int cflag)
+{
+       co->write    = m147_scc_write;
+       co->wait_key = m147_scc_wait_key;
+}
index 60134d9de5bb401c781085693da6fca287c4a6a2..b61ee9c6ac8f58c7bc0055a869969d20c698ad8d 100644 (file)
@@ -56,8 +56,7 @@ SRAM can also be used as additional console device, use debug=mem.
 This will save kernel startup msgs into SRAM, the screen will display 
 only the penguin - and shell prompt if it gets that far..
 
-Serial console works and can also be used for debugging, provided serial
-initialisation works.
+Serial console works and can also be used for debugging, see loader_txt
 
 Most problems seem to be caused by fawlty or badly configured io-cards or 
 harddrives anyway..there are so many things that can go wrong here.
@@ -82,8 +81,9 @@ The main interrupt register IIRQ_REG will indicate whether an IRQ was internal
 or from some ISA devices, EIRQ_REG can distinguish up to 8 ISA IRQs.
 
 The Q40 custom chip is programmable to provide 2 periodic timers:
-       - 50 or 200 Hz - level 2,  !!THIS CANT BE DISABLED!!
-       - 10 or 20 KHz - level 4 (and possibly 6 - hardware decoding..)
+       - 50 or 200 Hz - level 2,
+       - 10 or 20 KHz - level 4 
+  !!THIS CANT BE DISABLED!!
 
 Linux uses the 200 Hz interrupt for timer and beep by default.
 
@@ -92,9 +92,6 @@ Interrupts
 ==========
 
 q40 master chip handles only level triggered interrupts :-((
-further limitation is no disabling etc. There is NO WAY to remove
-an ISA irq request other than serve the HW specific control register,
-the ISA irq lines are connected straight to the CPU ipl1 pin..
 
 IRQ sharing is not yet implemented but this should be only a minor
 problem..
@@ -102,12 +99,17 @@ problem..
 Linux has some requirements wrt interrupt architecture, these are
 to my knowledge:
        (a) interrupt handler must not be reentered even when sti() is called
+           from within handler
        (b) working enable/disable_irq
 
 Luckily these requirements are only important for drivers shared
 with other architectures - ide,serial,parallel, ethernet..
-q40ints.c now contains a trivial hack for (a), however (b) could
-be only solved by driver-specific code
+q40ints.c now contains a trivial hack for (a), (b) is more difficult
+because only irq's 4-15 can be disabled - and only all o them at once.
+Thus disable_irq() can effectively block the machine if the driver goes
+asleep.
+One thing to keep in minde when hacking around the interrupt code is 
+that there is no way to find out which IRQ caused a request.
 
 Keyboard
 ========
index 2496aa9ba3fdf0b8d1ee88a9507644d2f90d4f77..3b70dfcc3457bbf481e3ddb2c60f91834170ca93 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <linux/config.h>
+#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
@@ -22,6 +23,7 @@
 #include <linux/linkage.h>
 #include <linux/init.h>
 #include <linux/major.h>
+#include <linux/serial_reg.h>
 
 #include <asm/rtc.h>
 #include <asm/bootinfo.h>
@@ -34,8 +36,8 @@
 #include <asm/q40_master.h>
 #include <asm/keyboard.h>
 
-extern void fd_floppy_eject(void);
-extern void fd_floppy_setup(char *str, int *ints);
+extern void floppy_eject(void);
+extern void floppy_setup(char *str, int *ints);
 
 extern void q40_process_int (int level, struct pt_regs *regs);
 extern void (*q40_sys_default_handler[]) (int, void *, struct pt_regs *);  /* added just for debugging */
@@ -65,9 +67,12 @@ extern char *saved_command_line;
 extern char m68k_debug_device[];
 static void q40_mem_console_write(struct console *co, const char *b,
                                    unsigned int count);
+#if 0
+extern int ql_ticks=0;
+extern int sound_ticks=0;
+#endif
 
-static int ql_ticks=0;
-static int sound_ticks=0;
+extern int ql_ticks;
 
 static unsigned char bcd2bin (unsigned char b);
 static unsigned char bin2bcd (unsigned char b);
@@ -81,12 +86,6 @@ static struct console q40_console_driver = {
 };
 
 
-/* Save tick handler routine pointer, will point to do_timer() in
- * kernel/sched.c */
-
-/* static void (*tick_handler)(int, void *, struct pt_regs *); */
-
-
 /* early debugging function:*/
 extern char *q40_mem_cptr; /*=(char *)0xff020000;*/
 static int _cpleft;
@@ -140,6 +139,41 @@ static void q40_get_model(char *model)
     sprintf(model, "Q40");
 }
 
+/* pasted code to make parport_pc happy */
+extern __inline__ int __get_order(unsigned long size)
+{
+       int order;
+
+       size = (size-1) >> (PAGE_SHIFT-1);
+       order = -1;
+       do {
+               size >>= 1;
+               order++;
+       } while (size);
+       return order;
+}
+void *pci_alloc_consistent(void *hwdev, size_t size,
+                          dma_addr_t *dma_handle)
+{
+       void *ret;
+       int gfp = GFP_ATOMIC;
+
+       ret = (void *)__get_free_pages(gfp, __get_order(size));
+
+       if (ret != NULL) {
+               memset(ret, 0, size);
+               *dma_handle = virt_to_bus(ret);
+       }
+       return ret;
+}
+
+void pci_free_consistent(void *hwdev, size_t size,
+                        void *vaddr, dma_addr_t dma_handle)
+{
+       free_pages((unsigned long)vaddr, __get_order(size));
+}
+/* end pasted code */
+
 
 /* No hardware options on Q40? */
 
@@ -149,6 +183,16 @@ static int q40_get_hardware_list(char *buffer)
     return 0;
 }
 
+static unsigned int serports[]={0x3f8,0x2f8,0x3e8,0x2e8,0};
+void q40_disable_irqs(void)
+{
+  unsigned i,j;
+  
+  j=0;
+  while((i=serports[j++])) outb(0,i+UART_IER);
+  master_outb(0,EXT_ENABLE_REG);
+  master_outb(0,KEY_IRQ_ENABLE_REG);
+}
 
 void __init config_q40(void)
 {
@@ -177,13 +221,14 @@ void __init config_q40(void)
     mach_sysrq_key       = 0x54;
 #endif
     conswitchp = &dummy_con;
-#ifdef CONFIG_BLK_DEV_FD
-    mach_floppy_setup    = fd_floppy_setup;
-    mach_floppy_eject    = fd_floppy_eject;
+#if 0 /*def CONFIG_BLK_DEV_FD*/
+    mach_floppy_setup    = floppy_setup;
+    mach_floppy_eject    = floppy_eject;
     /**/
 #endif
 
-    mach_max_dma_address = 0;   /* no DMA at all */
+    q40_disable_irqs();
+    mach_max_dma_address = 32*1024*1024;   /* no DMA at all, but ide-scsi requires it.. */
 
 
 /* userfull for early debuging stages writes kernel messages into SRAM */
@@ -203,6 +248,7 @@ int q40_parse_bootinfo(const struct bi_record *rec)
   return 1;  /* unknown */
 }
 
+#if 0
 #define DAC_LEFT  ((unsigned char *)0xff008000)
 #define DAC_RIGHT ((unsigned char *)0xff008004)
 void q40_mksound(unsigned int hz, unsigned int ticks)
@@ -258,7 +304,11 @@ static void q40_timer_int (int irq, void *dev_id, struct pt_regs *fp)
 #endif
     q40_timer_routine(irq, dev_id, fp);
 }
+#endif
 
+#if 0
+extern void (*q40_timer_routine)(int, void *, struct pt_regs *);
+extern void q40_timer_int();
 
 void q40_sched_init (void (*timer_routine)(int, void *, struct pt_regs *))
 {
@@ -289,7 +339,7 @@ void q40_sched_init (void (*timer_routine)(int, void *, struct pt_regs *))
 #endif
 #endif
 }
-
+#endif
 
 unsigned long q40_gettimeoffset (void)
 {
index c6625aad8b09dd545d89714269c70ceaa411eaa0..96d9414d33705d6503b0adaf366aa34e4baca89b 100644 (file)
@@ -7,18 +7,22 @@
  * License.  See the file COPYING in the main directory of this archive
  * for more details.
  *
- * losely based on bvme6000ints.c
+ * .. used to be losely based on bvme6000ints.c
  *
  */
 
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/string.h>
+#include <linux/sched.h>
 
+#include <asm/rtc.h>
 #include <asm/ptrace.h>
 #include <asm/system.h>
 #include <asm/irq.h>
+#include <asm/hardirq.h>
 #include <asm/traps.h>
 
 #include <asm/q40_master.h>
@@ -71,13 +75,16 @@ short unsigned q40_ablecount[Q40_IRQ_MAX+1];
  * the q40 IRQ handling routines.
  */
 
+static int disabled=0;
+
 void q40_init_IRQ (void)
 {
        int i;
 
+       disabled=0;
        for (i = 0; i <= Q40_IRQ_MAX; i++) {
                irq_tab[i].handler = q40_defhand;
-               irq_tab[i].flags = IRQ_FLG_STD;
+               irq_tab[i].flags = 0;
                irq_tab[i].dev_id = NULL;
                /*              irq_tab[i].next = NULL;*/
                irq_tab[i].devname[0] = 0;
@@ -87,14 +94,10 @@ void q40_init_IRQ (void)
        }
 
        /* setup handler for ISA ints */
-       sys_request_irq(IRQ2,q40_irq2_handler, IRQ_FLG_LOCK, "q40 ISA and master chip", NULL);
+       sys_request_irq(IRQ2,q40_irq2_handler, 0, "q40 ISA and master chip", NULL);
 
        /* now enable some ints.. */
-
-#if 0  /* has been abandoned */
-       master_outb(1,SER_ENABLE_REG);
-#endif
-       master_outb(1,EXT_ENABLE_REG);
+       master_outb(1,EXT_ENABLE_REG);  /* hm, aint that too early? */
 
        /* would be spurious ints by now, q40kbd_init_hw() does that */
        master_outb(0,KEY_IRQ_ENABLE_REG);
@@ -124,24 +127,20 @@ int q40_request_irq(unsigned int irq,
          default:
          }
 
-       if (irq<Q40_IRQ_TIMER)
+       if (irq<Q40_IRQ_SAMPLE)
          {
-           if (!(irq_tab[irq].flags & IRQ_FLG_STD)) 
-             {
-               if (irq_tab[irq].flags & IRQ_FLG_LOCK) 
+           if (irq_tab[irq].dev_id != NULL) 
                  {
                    printk("%s: IRQ %d from %s is not replaceable\n",
                           __FUNCTION__, irq, irq_tab[irq].devname);
                    return -EBUSY;
                  }
-               if (flags & IRQ_FLG_REPLACE) 
+           /*printk("IRQ %d set to handler %p\n",irq,handler);*/
+           if (dev_id==NULL)
                  {
-                   printk("%s: %s can't replace IRQ %d from %s\n",
-                          __FUNCTION__, devname, irq, irq_tab[irq].devname);
-                   return -EBUSY;
-                 }
+               printk("WARNING: dev_id == NULL in request_irq\n");
+               dev_id=1;
              }
-           /*printk("IRQ %d set to handler %p\n",irq,handler);*/
            irq_tab[irq].handler = handler;
            irq_tab[irq].flags   = flags;
            irq_tab[irq].dev_id  = dev_id;
@@ -150,7 +149,7 @@ int q40_request_irq(unsigned int irq,
            return 0;
          }
        else {
-         /* Q40_IRQ_TIMER :somewhat special actions required here ..*/
+         /* Q40_IRQ_SAMPLE :somewhat special actions required here ..*/
          sys_request_irq(4,handler,flags,devname,dev_id);
          sys_request_irq(6,handler,flags,devname,dev_id);
          return 0;
@@ -175,31 +174,120 @@ void q40_free_irq(unsigned int irq, void *dev_id)
          default:
          }
        
-       if (irq<Q40_IRQ_TIMER)
+       if (irq<Q40_IRQ_SAMPLE)
          {
            if (irq_tab[irq].dev_id != dev_id)
              printk("%s: Removing probably wrong IRQ %d from %s\n",
                     __FUNCTION__, irq, irq_tab[irq].devname);
            
            irq_tab[irq].handler = q40_defhand;
-           irq_tab[irq].flags   = IRQ_FLG_STD;
+           irq_tab[irq].flags   = 0;
            irq_tab[irq].dev_id  = NULL;
            /* irq_tab[irq].devname = NULL; */
            /* do not reset state !! */
          }
        else
-         { /* == Q40_IRQ_TIMER */
+         { /* == Q40_IRQ_SAMPLE */
            sys_free_irq(4,dev_id);
            sys_free_irq(6,dev_id);
          }
 }
 
-#if 1
+
 void q40_process_int (int level, struct pt_regs *fp)
 {
   printk("unexpected interrupt %x\n",level);
 }
+
+/* 
+ * this stuff doesn't really belong here..
+*/
+int ql_ticks=0;
+static int sound_ticks=0;
+
+#define SVOL 45
+
+void q40_mksound(unsigned int hz, unsigned int ticks)
+{
+  /* for now ignore hz, except that hz==0 switches off sound */
+  /* simply alternate the ampl (128-SVOL)-(128+SVOL)-..-.. at 200Hz */
+  if (hz==0)
+    {
+      if (sound_ticks)
+       sound_ticks=1; /* atomic - no irq spinlock used */
+
+      *DAC_LEFT=128;
+      *DAC_RIGHT=128;
+
+      return;
+    }
+  /* sound itself is done in q40_timer_int */
+  if (sound_ticks == 0) sound_ticks=1000; /* pretty long beep */
+  sound_ticks=ticks<<1;
+}
+
+static void (*q40_timer_routine)(int, void *, struct pt_regs *);
+static short rtc_oldsecs=0;
+unsigned rtc_irq_flags=0;
+unsigned rtc_irq_ctrl=0;
+
+static void q40_timer_int (int irq, void * dev, struct pt_regs * regs)
+{
+
+  
+#if (HZ==100)
+    ql_ticks = ql_ticks ? 0 : 1;
+    if (sound_ticks)
+      {
+       unsigned char sval=(sound_ticks & 1) ? 128-SVOL : 128+SVOL;
+       sound_ticks--;
+       *DAC_LEFT=sval;
+       *DAC_RIGHT=sval;
+      }
+#ifdef CONFIG_Q40RTC
+    if (rtc_irq_ctrl && (rtc_oldsecs != RTC_SECS))
+      {
+       rtc_oldsecs = RTC_SECS;
+       rtc_irq_flags = RTC_UIE;
+       rtc_interrupt();
+      }
 #endif
+    if (ql_ticks) return;
+#endif
+    q40_timer_routine(irq, dev, regs);
+}
+
+void q40_sched_init (void (*timer_routine)(int, void *, struct pt_regs *))
+{
+    int timer_irq;
+
+    q40_timer_routine = timer_routine;
+
+#if (HZ==10000)
+    timer_irq=Q40_IRQ_SAMPLE;
+#else
+    timer_irq=Q40_IRQ_FRAME;
+#endif
+
+    /*printk("registering sched/timer IRQ %d, handler %p\n", timer_irq,q40_timer_int);*/
+    /*printk("timer routine %p\n",q40_timer_routine);*/
+
+    if (request_irq(timer_irq, q40_timer_int, 0,
+                               "timer", q40_timer_int))
+       panic ("Couldn't register timer int");
+
+#if (HZ==10000)
+    master_outb(SAMPLE_LOW,SAMPLE_RATE_REG);
+    master_outb(-1,SAMPLE_CLEAR_REG);
+    master_outb(1,SAMPLE_ENABLE_REG);
+#else
+    master_outb(-1,FRAME_CLEAR_REG);   /* not necessary ? */
+#if (HZ==100)
+    master_outb( 1,FRAME_RATE_REG);
+#endif
+#endif
+}
+
 
 /* 
  * tables to translate bits into IRQ numbers 
@@ -208,11 +296,12 @@ void q40_process_int (int level, struct pt_regs *fp)
 */
 
 struct IRQ_TABLE{ unsigned mask; int irq ;};
-
+#if 0
 static struct IRQ_TABLE iirqs[]={
   {IRQ_FRAME_MASK,Q40_IRQ_FRAME},
   {IRQ_KEYB_MASK,Q40_IRQ_KEYBOARD},
   {0,0}};
+#endif
 static struct IRQ_TABLE eirqs[]={
   {IRQ3_MASK,3},                   /* ser 1 */
   {IRQ4_MASK,4},                   /* ser 2 */
@@ -231,103 +320,124 @@ static struct IRQ_TABLE eirqs[]={
 
 /* complain only this many times about spurious ints : */
 static int ccleirq=60;    /* ISA dev IRQ's*/
-static int cclirq=60;     /* internal */
+/*static int cclirq=60;*/     /* internal */
 
 /* FIX: add shared ints,mask,unmask,probing.... */
 
-/* this is an awfull hack.. */
+
 #define IRQ_INPROGRESS 1
-static int disabled=0;
 /*static unsigned short saved_mask;*/
+static int do_tint=0;
+
+#define DEBUG_Q40INT
+#define IP_USE_DISABLE /* would be nice, but crashes ???? */
+/*static int dd_count=0;*/
 
+static int mext_disabled=0;  /* ext irq disabled by master chip? */
+static int aliased_irq=0;  /* how many times inside handler ?*/
+
+
+/* got level 2 interrupt, dispatch to ISA or keyboard/timer IRQs */
 void q40_irq2_handler (int vec, void *devname, struct pt_regs *fp)
 {
-  /* got level 2 interrupt, dispatch to ISA or keyboard IRQs */
-
-        unsigned mir=master_inb(IIRQ_REG);
+  unsigned mir;
        unsigned mer;
        int irq,i;
 
+ repeat:
+  mir=master_inb(IIRQ_REG);
+  if (mir&IRQ_FRAME_MASK) 
+    { /* dont loose  ticks */
+      do_tint++;
+      master_outb(-1,FRAME_CLEAR_REG);
+    }
        if ((mir&IRQ_SER_MASK) || (mir&IRQ_EXT_MASK)) 
          {
-           
            /* some ISA dev caused the int */
-           
            mer=master_inb(EIRQ_REG);
-           
            for (i=0; eirqs[i].mask; i++)
              {
                if (mer&(eirqs[i].mask)) 
                  {
                    irq=eirqs[i].irq;
-                   irq_tab[irq].count++;
+/*
+ * There is a little mess wrt which IRQ really caused this irq request. The
+ * main problem is that IIRQ_REG and EIRQ_REG reflect the state when they
+ * are read - which is long after the request came in. In theory IRQs should
+ * not just go away but they occassionally do
+ */
+             if (irq>4 && irq<=15 && mext_disabled) 
+               {
+                 /*aliased_irq++;*/
+                 goto iirq;
+               }
                    if (irq_tab[irq].handler == q40_defhand )
                      {
                        printk("handler for IRQ %d not defined\n",irq);
                        continue; /* ignore uninited INTs :-( */
                      }
-
                    if ( irq_tab[irq].state & IRQ_INPROGRESS )
                      {
+                 /* some handlers do sti() for irq latency reasons, */
+                 /* however reentering an active irq handler is not permitted */
+#ifdef IP_USE_DISABLE
+                 /* in theory this is the better way to do it because it still */
+                 /* lets through eg the serial irqs, unfortunately it crashes */
+                 disable_irq(irq);
+                 disabled=1;
+#else
                        /*printk("IRQ_INPROGRESS detected for irq %d, disabling - %s disabled\n",irq,disabled ? "already" : "not yet"); */
-
-                       /*saved_mask = fp->sr;*/
-                       fp->sr = (fp->sr & (~0x700))+0x200;
+                 fp->sr = (((fp->sr) & (~0x700))+0x200);
                        disabled=1;
-                       return;
+#endif
+                 goto iirq;
                      }
+             irq_tab[irq].count++; 
                    irq_tab[irq].state |= IRQ_INPROGRESS;
                    irq_tab[irq].handler(irq,irq_tab[irq].dev_id,fp);
+             irq_tab[irq].state &= ~IRQ_INPROGRESS;
 
                    /* naively enable everything, if that fails than    */
                    /* this function will be reentered immediately thus */
                    /* getting another chance to disable the IRQ        */
 
-                   irq_tab[irq].state &= ~IRQ_INPROGRESS;
                    if ( disabled ) 
                      {
+#ifdef IP_USE_DISABLE
+                 if (irq>4){
+                   disabled=0;
+                   /*dd_count--;*/
+                   enable_irq(irq);}
+#else
+                 disabled=0;
                        /*printk("reenabling irq %d\n",irq); */
-                       fp->sr = (fp->sr & (~0x700)); /*saved_mask; */
-                       disabled=0;
+#if 0
+                 fp->sr = ((fp->sr) & (~0x700)); /* unneeded ?! */
+#endif
+#endif
                      }
-                   else if ( fp->sr &0x200 )
-                     printk("exiting irq handler: fp->sr &0x200 !!\n");
-
-                   return;
+             goto repeat;  /* return;  */
                  }
              }
-           if (ccleirq>0
+      if (mer && ccleirq>0 && !aliased_irq
              printk("ISA interrupt from unknown source? EIRQ_REG = %x\n",mer),ccleirq--;
          } 
-       else 
+ iirq:
+  mir=master_inb(IIRQ_REG);
+  if (mir&IRQ_FRAME_MASK) 
          {
-           /* internal */
-
-           for (i=0; iirqs[i].mask; i++)
+      do_tint++;
+      master_outb(-1,FRAME_CLEAR_REG);
+    }
+  for(;do_tint>0;do_tint--) 
              {
-               if (mir&(iirqs[i].mask)) 
-                 {
-                   irq=iirqs[i].irq;
-                   irq_tab[irq].count++;
-                   if (irq_tab[irq].handler == q40_defhand )
-                     continue; /* ignore uninited INTs :-( */
-                   
-                   /* the INPROGRESS stuff should be completely useless*/
-                   /* for internal ints, nevertheless test it..*/
-                   if ( irq_tab[irq].state & IRQ_INPROGRESS )
+      irq_tab[Q40_IRQ_FRAME].count++;
+      irq_tab[Q40_IRQ_FRAME].handler(Q40_IRQ_FRAME,irq_tab[Q40_IRQ_FRAME].dev_id,fp);    
+    }
+  if (mir&IRQ_KEYB_MASK) /* may handle it even if actually disabled*/
                      {
-                       /*disable_irq(irq);
-                         return;*/
-                       printk("rentering handler for IRQ %d !!\n",irq);
-                     }
-                   irq_tab[irq].handler(irq,irq_tab[irq].dev_id,fp);
-                   irq_tab[irq].state &= ~IRQ_INPROGRESS;
-                   /*enable_irq(irq);*/ /* better not try luck !*/
-                   return;
-                 }
-             }
-           if (cclirq>0)
-             printk("internal level 2 interrupt from unknown source ? IIRQ_REG=%x\n",mir),cclirq--;
+      irq_tab[Q40_IRQ_KEYBOARD].count++;
+      irq_tab[Q40_IRQ_KEYBOARD].handler(Q40_IRQ_KEYBOARD,irq_tab[Q40_IRQ_KEYBOARD].dev_id,fp);
          }
 }
 
@@ -335,9 +445,11 @@ int q40_get_irq_list (char *buf)
 {
        int i, len = 0;
 
-       for (i = 0; i <= Q40_IRQ_MAX; i++) {
+       for (i = 0; i <= Q40_IRQ_MAX; i++) 
+         {
                if (irq_tab[i].count)
-                       len += sprintf (buf+len, "Vec 0x%02x: %8d  %s%s\n",
+             len += sprintf (buf+len, "%sIRQ %02d: %8d  %s%s\n",
+                             (i<=15) ? "ISA-" : "    " ,               
                            i, irq_tab[i].count,
                            irq_tab[i].devname[0] ? irq_tab[i].devname : "?",
                            irq_tab[i].handler == q40_defhand ? 
@@ -370,30 +482,17 @@ static void sys_default_handler(int lev, void *dev_id, struct pt_regs *regs)
    sys_default_handler,sys_default_handler,sys_default_handler,sys_default_handler
  };
 
-int irq_disabled=0;
+
 void q40_enable_irq (unsigned int irq)
 {
-  /* enable ISA iqs */
-  if ( irq>=0 && irq<=15 ) /* the moderately bad case */
+  if ( irq>=5 && irq<=15 )
+  {
+    mext_disabled--;
+    if (mext_disabled>0)
+         printk("q40_enable_irq : nested disable/enable\n"); 
+    if (mext_disabled==0)
     master_outb(1,EXT_ENABLE_REG);
-#if 0
-  unsigned long flags;
-  int i;
-
-  if (irq>=10 && irq <= 15)
-    {
-      if ( !(--q40_ablecount[irq]))
-       for (i=10,irq_disabled=0; i<=15; i++)
-         {
-           irq_disabled |= (q40_ablecount[irq] !=0);
-         }
-      if ( !irq_disabled )
-       {
-         save_flags(flags);
-         restore_flags(flags & (~0x700));
-       }
     }
-#endif
 }
 
 
@@ -404,19 +503,12 @@ void q40_disable_irq (unsigned int irq)
   * Any driver should not attempt to sleep accross disable_irq !!
   */
 
-  if ( irq>=10 && irq<=15 ) /* the moderately bad case */
-    master_outb(0,EXT_ENABLE_REG);
-#if 0
-  unsigned long flags;
-
-  if (irq>=10 && irq <= 15)
+  if ( irq>=5 && irq<=15 ) 
     {
-      save_flags(flags);
-      restore_flags(flags | 0x200 );
-      irq_disabled=1;
-      q40_ablecount[irq]++;
+    master_outb(0,EXT_ENABLE_REG);
+      mext_disabled++;
+      if (mext_disabled>1) printk("disable_irq nesting count %d\n",mext_disabled);
     }
-#endif
 }
 
 unsigned long q40_probe_irq_on (void)
@@ -428,3 +520,7 @@ int q40_probe_irq_off (unsigned long irqs)
 {
   return -1;
 }
+/*
+ * Local variables:
+ * compile-command: "m68k-linux-gcc -D__KERNEL__ -I/home/rz/lx/linux-2.2.6/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -fno-strength-reduce -ffixed-a2 -m68040   -c -o q40ints.o q40ints.c"
+ */
index 83e33e17b78b1510c5f3f113c76589f1e7249f56..c2c0eb90fd4062cb5eb3cafa1d7f7ebcd0a092af 100644 (file)
@@ -49,11 +49,28 @@ unsigned char amiga_vblank;
 unsigned char amiga_psfreq;
 struct amiga_hw_present amiga_hw_present;
 
-static const char *amiga_models[] = {
-    "A500", "A500+", "A600", "A1000", "A1200", "A2000", "A2500", "A3000",
-    "A3000T", "A3000+", "A4000", "A4000T", "CDTV", "CD32", "Draco"
+static const char s_a500[] __initdata = "A500";
+static const char s_a500p[] __initdata = "A500+";
+static const char s_a600[] __initdata = "A600";
+static const char s_a1000[] __initdata = "A1000";
+static const char s_a1200[] __initdata = "A1200";
+static const char s_a2000[] __initdata = "A2000";
+static const char s_a2500[] __initdata = "A2500";
+static const char s_a3000[] __initdata = "A3000";
+static const char s_a3000t[] __initdata = "A3000T";
+static const char s_a3000p[] __initdata = "A3000+";
+static const char s_a4000[] __initdata = "A4000";
+static const char s_a4000t[] __initdata = "A4000T";
+static const char s_cdtv[] __initdata = "CDTV";
+static const char s_cd32[] __initdata = "CD32";
+static const char s_draco[] __initdata = "Draco";
+static const char *amiga_models[] __initdata = {
+    s_a500, s_a500p, s_a600, s_a1000, s_a1200, s_a2000, s_a2500, s_a3000,
+    s_a3000t, s_a3000p, s_a4000, s_a4000t, s_cdtv, s_cd32, s_draco,
 };
 
+static char amiga_model_name[13] = "Amiga ";
+
 extern char m68k_debug_device[];
 
 static void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *));
@@ -117,6 +134,26 @@ static char amiga_sysrq_xlate[128] =
 
 extern void (*kd_mksound)(unsigned int, unsigned int);
 
+
+    /*
+     *  Motherboard Resources present in all Amiga models
+     */
+
+static struct resource mb_res[] = {
+    { "Ranger Memory", 0x00c00000, 0x00c7ffff },
+    { "CIA B", 0x00bfd000, 0x00bfdfff },
+    { "CIA A", 0x00bfe000, 0x00bfefff },
+    { "Custom I/O", 0x00dff000, 0x00dfffff },
+    { "Kickstart ROM", 0x00f80000, 0x00ffffff }
+};
+
+static struct resource rtc_resource = {
+    "A2000 RTC", 0x00dc0000, 0x00dcffff
+};
+
+static struct resource ram_resource[NUM_MEMINFO];
+
+
     /*
      *  Parse an Amiga-specific record in the bootinfo
      */
@@ -157,11 +194,15 @@ int amiga_parse_bootinfo(const struct bi_record *record)
            break;
 
        case BI_AMIGA_AUTOCON:
-           if (zorro_num_autocon < ZORRO_NUM_AUTO)
-               memcpy(&zorro_autocon[zorro_num_autocon++],
-                      (const struct ConfigDev *)data,
-                      sizeof(struct ConfigDev));
-           else
+           if (zorro_num_autocon < ZORRO_NUM_AUTO) {
+               const struct ConfigDev *cd = (struct ConfigDev *)data;
+               struct zorro_dev *dev = &zorro_autocon[zorro_num_autocon++];
+               dev->rom = cd->cd_Rom;
+               dev->slotaddr = cd->cd_SlotAddr;
+               dev->slotsize = cd->cd_SlotSize;
+               dev->resource.start = (unsigned long)cd->cd_BoardAddr;
+               dev->resource.end = dev->resource.start+cd->cd_BoardSize-1;
+           } else
                printk("amiga_parse_bootinfo: too many AutoConfig devices\n");
            break;
 
@@ -188,8 +229,10 @@ static void __init amiga_identify(void)
   memset(&amiga_hw_present, 0, sizeof(amiga_hw_present));
 
   printk("Amiga hardware found: ");
-  if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO)
+  if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) {
     printk("[%s] ", amiga_models[amiga_model-AMI_500]);
+    strcat(amiga_model_name, amiga_models[amiga_model-AMI_500]);
+  }
 
   switch(amiga_model) {
   case AMI_UNKNOWN:
@@ -342,9 +385,19 @@ static void __init amiga_identify(void)
 
 void __init config_amiga(void)
 {
+  int i;
+
   amiga_debug_init();
   amiga_identify();
 
+  /* Some APUS boxes may have PCI memory, but ... */
+  iomem_resource.name = "Memory";
+  request_resource(&iomem_resource, &ranger_resource);
+  request_resource(&iomem_resource, &ciab_resource);
+  request_resource(&iomem_resource, &ciaa_resource);
+  request_resource(&iomem_resource, &custom_chips_resource);
+  request_resource(&iomem_resource, &kickstart_resource);
+
   mach_sched_init      = amiga_sched_init;
   mach_keyb_init       = amiga_keyb_init;
   mach_kbdrate         = amiga_kbdrate;
@@ -362,9 +415,12 @@ void __init config_amiga(void)
   mach_gettimeoffset   = amiga_gettimeoffset;
   if (AMIGAHW_PRESENT(A3000_CLK)){
     mach_gettod  = a3000_gettod;
+    rtc_resource.name[1] = '3';
+    request_resource(&iomem_resource, &rtc_resource);
   }
   else{ /* if (AMIGAHW_PRESENT(A2000_CLK)) */
     mach_gettod  = a2000_gettod;
+    request_resource(&iomem_resource, &rtc_resource);
   }
 
   mach_max_dma_address = 0xffffffff; /*
@@ -404,6 +460,17 @@ void __init config_amiga(void)
   /* ensure that the DMA master bit is set */
   custom.dmacon = DMAF_SETCLR | DMAF_MASTER;
 
+  /* request all RAM */
+  for (i = 0; i < m68k_num_memory; i++) {
+    ram_resource[i].name =
+      (m68k_memory[i].addr >= 0x01000000) ? "32-bit Fast RAM" :
+      (m68k_memory[i].addr < 0x00c00000) ? "16-bit Fast RAM" :
+      "16-bit Slow RAM";
+    ram_resource[i].start = m68k_memory[i].addr;
+    ram_resource[i].end = m68k_memory[i].addr+m68k_memory[i].size-1;
+    request_resource(&iomem_resource, &ram_resource[i]);
+  }
+
   /* initialize chipram allocator */
   amiga_chip_init ();
 
@@ -437,6 +504,8 @@ static void __init amiga_sched_init(void (*timer_routine)(int, void *,
 {
        jiffy_ticks = (amiga_eclock+HZ/2)/HZ;
 
+       if (!request_mem_region(CIAB_PHYSADDR+0x400, 0x200, "timer"))
+           printk("Cannot allocate ciab.ta{lo,hi}\n");
        ciab.cra &= 0xC0;   /* turn off timer A, continuous mode, from Eclk */
        ciab.talo = jiffy_ticks % 256;
        ciab.tahi = jiffy_ticks / 256;
@@ -840,9 +909,7 @@ static void amiga_heartbeat(int on)
 
 static void amiga_get_model(char *model)
 {
-    strcpy(model, "Amiga ");
-    if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO)
-       strcat(model, amiga_models[amiga_model-AMI_500]);
+    strcpy(model, amiga_model_name);
 }
 
 
index 88764463a442a917271728b18fc5d78201f7b978..5aedc25439e818f6e7109a7037fcf21feb6a6c57 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <linux/major.h>
 #include <linux/malloc.h>
+#include <linux/vmalloc.h>
 #include <linux/blk.h>
 #include <linux/init.h>
 #include <linux/module.h>
@@ -201,8 +202,6 @@ z2_open( struct inode *inode, struct file *filp )
 #ifdef __powerpc__
                /* FIXME: ioremap doesn't build correct memory tables. */
                {
-                       extern void* vmalloc (unsigned long);
-                       extern void vfree (void*);
                        vfree(vmalloc (size));
                }
 
index 1136cc0f44952a4ccf3dfde7c038b69ee13f2efe..993f0f2e14ca9bb32d613aa4a16e190d242abe04 100644 (file)
@@ -131,6 +131,9 @@ obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
 obj-$(CONFIG_SX) += sx.o generic_serial.o
 obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
 obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
+obj-$(CONFIG_SERIAL167) += serial167.o
+obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
 
 ifeq ($(CONFIG_RIO),y)
   SUB_DIRS += rio
index b7b6c3cc221c0cd9aa255b898fd516d0e5f6d3cc..f3eecc13f015975962533635614f68f7e79737fe 100644 (file)
@@ -47,6 +47,7 @@
 #include <linux/random.h>
 #include <linux/poll.h>
 #include <linux/init.h>
+#include <linux/ioport.h>
 #include <linux/logibusmouse.h>
 
 #include <asm/setup.h>
@@ -185,6 +186,8 @@ static int __init amiga_mouse_init(void)
 {
        if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_MOUSE))
                return -ENODEV;
+       if (!request_mem_region(CUSTOM_PHYSADDR+10, 2, "amigamouse [Denise]"))
+               return -EBUSY;
 
        custom.joytest = 0;     /* reset counters */
 #if AMIGA_OLD_INT
@@ -201,6 +204,7 @@ static int __init amiga_mouse_init(void)
 static void __exit amiga_mouse_exit(void)
 {
        unregister_busmouse(msedev);
+       release_mem_region(CUSTOM_PHYSADDR+10, 2);
 }
 
 module_init(amiga_mouse_init);
index 3496229c6d7af7479dc275c29d4b348e1f89052f..a7ccb1d75ef96c21e3d272a96cc775f4afaecc8f 100644 (file)
  * Revision 1.36.1.4  1995/03/29  06:14:14  bentson
  * disambiguate between Cyclom-16Y and Cyclom-32Ye;
  *
+ * Changes:
+ *
  * 200 lines of changes record removed - RGH 11-10-95, starting work on
  * converting this to drive serial ports on mvme166 (cd2401).
+ *
+ * Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 2000/08/25
+ * - get rid of verify_area
+ * - use get_user to access memory from userspace in set_threshold,
+ *   set_default_threshold and set_timeout
+ * - don't use the panic function in serial167_init
+ * - do resource release on failure on serial167_init
+ * - include missing restore_flags in mvme167_serial_console_setup
  */
 
 #include <linux/config.h>
 #include <asm/uaccess.h>
 #include <linux/init.h>
 
-#define cy_put_user    put_user
-
-static unsigned long cy_get_user(unsigned long *addr)
-{
-       unsigned long result = 0;
-       int error = get_user (result, addr);
-       if (error)
-               printk ("serial167: cy_get_user: error == %d\n", error);
-       return result;
-}
-
 #define SERIAL_PARANOIA_CHECK
 #undef  SERIAL_DEBUG_OPEN
 #undef  SERIAL_DEBUG_THROTTLE
@@ -1259,7 +1258,11 @@ cy_write(struct tty_struct * tty, int from_user,
 
        if (from_user) {
            down(&tmp_buf_sem);
-           copy_from_user(tmp_buf, buf, c);
+           if (copy_from_user(tmp_buf, buf, c)) {
+               up(&tmp_buf_sem);
+               restore_flags(flags);
+               return 0;
+           }
            c = MIN(c, MIN(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
                       SERIAL_XMIT_SIZE - info->xmit_head));
            memcpy(info->xmit_buf + info->xmit_head, tmp_buf, c);
@@ -1435,8 +1438,7 @@ get_serial_info(struct cyclades_port * info,
     tmp.close_delay = info->close_delay;
     tmp.custom_divisor = 0;     /*!!!*/
     tmp.hub6 = 0;               /*!!!*/
-    copy_to_user(retinfo,&tmp,sizeof(*retinfo));
-    return 0;
+    return copy_to_user(retinfo,&tmp,sizeof(*retinfo)) ? -EFAULT : 0;
 } /* get_serial_info */
 
 static int
@@ -1449,7 +1451,8 @@ set_serial_info(struct cyclades_port * info,
 /* CP('s'); */
     if (!new_info)
            return -EFAULT;
-    copy_from_user(&new_serial,new_info,sizeof(new_serial));
+    if (copy_from_user(&new_serial,new_info,sizeof(new_serial)))
+           return -EFAULT;
     old_info = *info;
 
     if (!suser()) {
@@ -1503,8 +1506,7 @@ get_modem_info(struct cyclades_port * info, unsigned int *value)
             | ((status  & CyDCD) ? TIOCM_CAR : 0)
             | ((status  & CyDSR) ? TIOCM_DSR : 0)
             | ((status  & CyCTS) ? TIOCM_CTS : 0);
-    cy_put_user(result,(unsigned int *) value);
-    return 0;
+    return put_user(result,(unsigned int *) value);
 } /* get_modem_info */
 
 static int
@@ -1514,8 +1516,10 @@ set_modem_info(struct cyclades_port * info, unsigned int cmd,
   int channel;
   volatile unsigned char *base_addr = (u_char *)BASE_ADDR;
   unsigned long flags;
-  unsigned int arg = cy_get_user((unsigned long *) value);
-
+  unsigned int arg;
+         
+    if (get_user(arg, (unsigned long *) value))
+       return -EFAULT;
     channel = info->line;
 
     switch (cmd) {
@@ -1612,7 +1616,8 @@ static int
 get_mon_info(struct cyclades_port * info, struct cyclades_monitor * mon)
 {
 
-   copy_to_user(mon, &info->mon, sizeof(struct cyclades_monitor));
+   if (copy_to_user(mon, &info->mon, sizeof(struct cyclades_monitor)))
+          return -EFAULT;
    info->mon.int_count  = 0;
    info->mon.char_count = 0;
    info->mon.char_max   = 0;
@@ -1621,13 +1626,16 @@ get_mon_info(struct cyclades_port * info, struct cyclades_monitor * mon)
 }
 
 static int
-set_threshold(struct cyclades_port * info, unsigned long value)
+set_threshold(struct cyclades_port * info, unsigned long *arg)
 {
    volatile unsigned char *base_addr = (u_char *)BASE_ADDR;
+   unsigned long value;
    int channel;
    
-   channel = info->line;
+   if (get_user(value, arg))
+          return -EFAULT;
 
+   channel = info->line;
    info->cor4 &= ~CyREC_FIFO;
    info->cor4 |= value & CyREC_FIFO;
    base_addr[CyCOR4] = info->cor4;
@@ -1644,13 +1652,17 @@ get_threshold(struct cyclades_port * info, unsigned long *value)
    channel = info->line;
 
    tmp = base_addr[CyCOR4] & CyREC_FIFO;
-   cy_put_user(tmp,value);
-   return 0;
+   return put_user(tmp,value);
 }
 
 static int
-set_default_threshold(struct cyclades_port * info, unsigned long value)
+set_default_threshold(struct cyclades_port * info, unsigned long *arg)
 {
+   unsigned long value;
+
+   if (get_user(value, arg))
+       return -EFAULT;
+
    info->default_threshold = value & 0x0f;
    return 0;
 }
@@ -1658,15 +1670,18 @@ set_default_threshold(struct cyclades_port * info, unsigned long value)
 static int
 get_default_threshold(struct cyclades_port * info, unsigned long *value)
 {
-   cy_put_user(info->default_threshold,value);
-   return 0;
+   return put_user(info->default_threshold,value);
 }
 
 static int
-set_timeout(struct cyclades_port * info, unsigned long value)
+set_timeout(struct cyclades_port * info, unsigned long *arg)
 {
    volatile unsigned char *base_addr = (u_char *)BASE_ADDR;
    int channel;
+   unsigned long value;
+
+   if (get_user(value, arg))
+          return -EFAULT;
    
    channel = info->line;
 
@@ -1685,8 +1700,7 @@ get_timeout(struct cyclades_port * info, unsigned long *value)
    channel = info->line;
 
    tmp = base_addr[CyRTPRL];
-   cy_put_user(tmp,value);
-   return 0;
+   return put_user(tmp,value);
 }
 
 static int
@@ -1699,15 +1713,14 @@ set_default_timeout(struct cyclades_port * info, unsigned long value)
 static int
 get_default_timeout(struct cyclades_port * info, unsigned long *value)
 {
-   cy_put_user(info->default_timeout,value);
-   return 0;
+   return put_user(info->default_timeout,value);
 }
 
 static int
 cy_ioctl(struct tty_struct *tty, struct file * file,
             unsigned int cmd, unsigned long arg)
 {
-  int error;
+  unsigned long val;
   struct cyclades_port * info = (struct cyclades_port *)tty->driver_data;
   int ret_val = 0;
 
@@ -1717,57 +1730,27 @@ cy_ioctl(struct tty_struct *tty, struct file * file,
 
     switch (cmd) {
         case CYGETMON:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(struct cyclades_monitor));
-            if (error){
-                ret_val = error;
-                break;
-            }
             ret_val = get_mon_info(info, (struct cyclades_monitor *)arg);
            break;
         case CYGETTHRESH:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned long));
-            if (error){
-                ret_val = error;
-                break;
-            }
            ret_val = get_threshold(info, (unsigned long *)arg);
            break;
         case CYSETTHRESH:
-            ret_val = set_threshold(info, (unsigned long)arg);
+            ret_val = set_threshold(info, (unsigned long *)arg);
            break;
         case CYGETDEFTHRESH:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned long));
-            if (error){
-                ret_val = error;
-                break;
-            }
            ret_val = get_default_threshold(info, (unsigned long *)arg);
            break;
         case CYSETDEFTHRESH:
-            ret_val = set_default_threshold(info, (unsigned long)arg);
+            ret_val = set_default_threshold(info, (unsigned long *)arg);
            break;
         case CYGETTIMEOUT:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned long));
-            if (error){
-                ret_val = error;
-                break;
-            }
            ret_val = get_timeout(info, (unsigned long *)arg);
            break;
         case CYSETTIMEOUT:
-            ret_val = set_timeout(info, (unsigned long)arg);
+            ret_val = set_timeout(info, (unsigned long *)arg);
            break;
         case CYGETDEFTIMEOUT:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned long));
-            if (error){
-                ret_val = error;
-                break;
-            }
            ret_val = get_default_timeout(info, (unsigned long *)arg);
            break;
         case CYSETDEFTIMEOUT:
@@ -1776,7 +1759,7 @@ cy_ioctl(struct tty_struct *tty, struct file * file,
         case TCSBRK:    /* SVID version: non-zero arg --> no break */
            ret_val = tty_check_change(tty);
            if (ret_val)
-               return ret_val;
+                   break;
             tty_wait_until_sent(tty,0);
             if (!arg)
                 send_break(info, HZ/4); /* 1/4 second */
@@ -1784,7 +1767,7 @@ cy_ioctl(struct tty_struct *tty, struct file * file,
         case TCSBRKP:   /* support for POSIX tcsendbreak() */
            ret_val = tty_check_change(tty);
            if (ret_val)
-               return ret_val;
+               break;
             tty_wait_until_sent(tty,0);
             send_break(info, arg ? arg*(HZ/10) : HZ/4);
             break;
@@ -1796,46 +1779,20 @@ cy_ioctl(struct tty_struct *tty, struct file * file,
 
 /* The following commands are incompletely implemented!!! */
         case TIOCGSOFTCAR:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned int *));
-            if (error){
-                ret_val = error;
-                break;
-            }
-            cy_put_user(C_CLOCAL(tty) ? 1 : 0,
-                        (unsigned long *) arg);
+            ret_val = put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned long *) arg);
             break;
         case TIOCSSOFTCAR:
-           error = verify_area(VERIFY_READ, (void *) arg
-                               ,sizeof(unsigned long *));
-            if (error){
-                ret_val = error;
-                break;
-            }
-
-            arg = cy_get_user((unsigned long *) arg);
+            ret_val = get_user(val, (unsigned long *) arg);
+           if (ret_val)
+                   break;
             tty->termios->c_cflag =
-                    ((tty->termios->c_cflag & ~CLOCAL) |
-                     (arg ? CLOCAL : 0));
+                    ((tty->termios->c_cflag & ~CLOCAL) | (val ? CLOCAL : 0));
             break;
         case TIOCMGET:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(unsigned int *));
-            if (error){
-                ret_val = error;
-                break;
-            }
             ret_val = get_modem_info(info, (unsigned int *) arg);
             break;
         case TIOCGSERIAL:
-            error = verify_area(VERIFY_WRITE, (void *) arg
-                                ,sizeof(struct serial_struct));
-            if (error){
-                ret_val = error;
-                break;
-            }
-            ret_val = get_serial_info(info,
-                                   (struct serial_struct *) arg);
+            ret_val = get_serial_info(info, (struct serial_struct *) arg);
             break;
         case TIOCSSERIAL:
             ret_val = set_serial_info(info,
@@ -2288,6 +2245,7 @@ mvme167_serial_console_setup(int cflag)
 
         my_udelay(20000L);     /* Allow time for any active o/p to complete */
         if(base_addr[CyCCR] != 0x00){
+            restore_flags(flags);
             /* printk(" chip is never idle (CCR != 0)\n"); */
             return;
         }
@@ -2296,6 +2254,7 @@ mvme167_serial_console_setup(int cflag)
         my_udelay(1000L);
 
         if(base_addr[CyGFRCR] == 0x00){
+            restore_flags(flags);
             /* printk(" chip is not responding (GFRCR stayed 0)\n"); */
             return;
         }
@@ -2384,6 +2343,7 @@ int
 serial167_init(void)
 {
   struct cyclades_port *info;
+  int ret = 0;
   int good_ports = 0;
   int port_num = 0;
   int index;
@@ -2456,10 +2416,16 @@ scrn[1] = '\0';
     cy_callout_driver.major = TTYAUX_MAJOR;
     cy_callout_driver.subtype = SERIAL_TYPE_CALLOUT;
 
-    if (tty_register_driver(&cy_serial_driver))
-           panic("Couldn't register Cyclom serial driver\n");
-    if (tty_register_driver(&cy_callout_driver))
-           panic("Couldn't register Cyclom callout driver\n");
+    ret = tty_register_driver(&cy_serial_driver);
+    if (ret) {
+           printk(KERN_ERR "Couldn't register MVME166/7 serial driver\n");
+           return ret;
+    }
+    ret = tty_register_driver(&cy_callout_driver);
+    if (ret) {
+           printk(KERN_ERR "Couldn't register MVME166/7 callout driver\n");
+           goto cleanup_serial_driver;
+    }
 
     init_bh(CYCLADES_BH, do_cyclades_bh);
 
@@ -2529,16 +2495,32 @@ scrn[1] = '\0';
 #ifdef CONFIG_REMOTE_DEBUG
     debug_setup();
 #endif
-    if (request_irq (MVME167_IRQ_SER_ERR, cd2401_rxerr_interrupt, 0,
-                               "cd2401_errors", cd2401_rxerr_interrupt) ||
-       request_irq (MVME167_IRQ_SER_MODEM, cd2401_modem_interrupt, 0,
-                               "cd2401_modem", cd2401_modem_interrupt) ||
-       request_irq (MVME167_IRQ_SER_TX, cd2401_tx_interrupt, 0,
-                               "cd2401_txints", cd2401_tx_interrupt) ||
-       request_irq (MVME167_IRQ_SER_RX, cd2401_rx_interrupt, 0,
-                               "cd2401_rxints", cd2401_rx_interrupt))
-    {
-       panic ("Couldn't get serial IRQs");
+    ret = request_irq(MVME167_IRQ_SER_ERR, cd2401_rxerr_interrupt, 0,
+                               "cd2401_errors", cd2401_rxerr_interrupt);
+    if (ret) {
+           printk(KERN_ERR "Could't get cd2401_errors IRQ");
+           goto cleanup_callout_driver;
+    }
+
+    ret = request_irq(MVME167_IRQ_SER_MODEM, cd2401_modem_interrupt, 0,
+                               "cd2401_modem", cd2401_modem_interrupt);
+    if (ret) {
+           printk(KERN_ERR "Could't get cd2401_modem IRQ");
+           goto cleanup_irq_cd2401_errors;
+    }
+
+    ret = request_irq(MVME167_IRQ_SER_TX, cd2401_tx_interrupt, 0,
+                               "cd2401_txints", cd2401_tx_interrupt);
+    if (ret) {
+           printk(KERN_ERR "Could't get cd2401_txints IRQ");
+           goto cleanup_irq_cd2401_modem;
+    }
+
+    ret = request_irq(MVME167_IRQ_SER_RX, cd2401_rx_interrupt, 0,
+                               "cd2401_rxints", cd2401_rx_interrupt);
+    if (ret) {
+           printk(KERN_ERR "Could't get cd2401_rxints IRQ");
+           goto cleanup_irq_cd2401_txints;
     }
 
     /* Now we have registered the interrupt handlers, allow the interrupts */
@@ -2550,6 +2532,19 @@ scrn[1] = '\0';
     pcc2chip[PccIMLR] = 3;                     /* Allow PCC2 ints above 3!? */
 
     return 0;
+cleanup_irq_cd2401_txints:
+    free_irq(MVME167_IRQ_SER_TX, cd2401_tx_interrupt);
+cleanup_irq_cd2401_modem:
+    free_irq(MVME167_IRQ_SER_MODEM, cd2401_modem_interrupt);
+cleanup_irq_cd2401_errors:
+    free_irq(MVME167_IRQ_SER_ERR, cd2401_rxerr_interrupt);
+cleanup_callout_driver:
+    if (tty_unregister_driver(&cy_callout_driver))
+           printk(KERN_ERR "Couldn't unregister MVME166/7 callout driver\n");
+cleanup_serial_driver:
+    if (tty_unregister_driver(&cy_serial_driver))
+           printk(KERN_ERR "Couldn't unregister MVME166/7 serial driver\n");
+    return ret;
 } /* serial167_init */
 
 
index ecf7cf05ec12592294a4d259729ad687e40ad139..d6bc4e63b521f953337852db6de971f38106ed30 100644 (file)
@@ -48,7 +48,7 @@
 #include <asm/bvme6000hw.h>
 #endif
 
-#include "generic_serial.h"
+#include <linux/generic_serial.h>
 #include "scc.h"
 
 
@@ -75,7 +75,7 @@ static void scc_disable_rx_interrupts(void * ptr);
 static void scc_enable_rx_interrupts(void * ptr);
 static int  scc_get_CD(void * ptr);
 static void scc_shutdown_port(void * ptr);
-static void scc_set_real_termios(void  *ptr);
+static int scc_set_real_termios(void  *ptr);
 static void scc_hungup(void  *ptr);
 static void scc_close(void  *ptr);
 static int scc_chars_in_buffer(void * ptr);
@@ -688,7 +688,7 @@ static void scc_shutdown_port(void *ptr)
 }
 
 
-static void scc_set_real_termios (void *ptr)
+static int scc_set_real_termios (void *ptr)
 {
        /* the SCC has char sizes 5,7,6,8 in that order! */
        static int chsize_map[4] = { 0, 2, 1, 3 };
@@ -697,12 +697,12 @@ static void scc_set_real_termios (void *ptr)
        struct scc_port *port = ptr;
        SCC_ACCESS_INIT(port);
 
-       if (!port->gs.tty || !port->gs.tty->termios) return;
+       if (!port->gs.tty || !port->gs.tty->termios) return 0;
 
        channel = port->channel;
 
        if (channel == CHANNEL_A)
-               return;         /* Settings controlled by boot PROM */
+               return 0;               /* Settings controlled by boot PROM */
 
        cflag  = port->gs.tty->termios->c_cflag;
        baud = port->gs.baud;
@@ -714,13 +714,13 @@ static void scc_set_real_termios (void *ptr)
                cli();
                SCCmod(TX_CTRL_REG, ~TCR_DTR, 0);
                restore_flags(flags);
-               return;
+               return 0;
        }
        else if ((MACH_IS_MVME16x && (baud < 50 || baud > 38400)) ||
                 (MACH_IS_MVME147 && (baud < 50 || baud > 19200)) ||
                 (MACH_IS_BVME6000 &&(baud < 50 || baud > 76800))) {
                printk("SCC: Bad speed requested, %d\n", baud);
-               return;
+               return 0;
        }
 
        if (cflag & CLOCAL)
@@ -769,6 +769,8 @@ static void scc_set_real_termios (void *ptr)
        SCCmod(DPLL_CTRL_REG, 0xff, DCR_BRG_ENAB);
 
        restore_flags(flags);
+
+       return 0;
 }
 
 
index 56f7ac4be57cd72ec2ee2436997c2c75dd392d3d..a076ef7c3a1a9a2eaacc06db4faece3eaf4b7230 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile,v 1.21 2000/11/01 14:05:02 calle Exp $
+# $Id: Makefile,v 1.22 2000/11/23 20:45:14 kai Exp $
 #
 # Makefile for the CAPI and AVM-B1 device drivers.
 #
 # parent makes..
 #
 # $Log: Makefile,v $
+# Revision 1.22  2000/11/23 20:45:14  kai
+# fixed module_init/exit stuff
+# Note: compiled-in kernel doesn't work pre 2.2.18 anymore.
+#
 # Revision 1.21  2000/11/01 14:05:02  calle
 # - use module_init/module_exit from linux/init.h.
 # - all static struct variables are initialized with "membername:" now.
@@ -150,19 +154,19 @@ ifeq ($(CONFIG_ISDN_CAPI),y)
   OX_OBJS  += kcapi.o
   O_OBJS   += capi.o
   ifdef CONFIG_ISDN_CAPIFS
-       OX_OBJS   += capifs.o
+       OX_OBJS   += capifs.o
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_B1ISA
-       O_OBJS   += b1isa.o
+       O_OBJS   += b1isa.o
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_B1PCI
-       O_OBJS  += b1pci.o
+       O_OBJS  += b1pci.o
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_T1ISA
-       O_OBJS   += t1isa.o
+       O_OBJS   += t1isa.o
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_B1PCMCIA
-       OX_OBJS   += b1pcmcia.o
+       OX_OBJS   += b1pcmcia.o
        ifeq ($(CONFIG_HOTPLUG),y)
                ifneq ($(CONFIG_PCMCIA),n)
                        M_OBJS   += avm_cs.o
@@ -170,44 +174,44 @@ ifeq ($(CONFIG_ISDN_CAPI),y)
        endif
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_T1PCI
-       O_OBJS   += t1pci.o
+       O_OBJS   += t1pci.o
   endif
   ifdef CONFIG_ISDN_DRV_AVMB1_C4
-       O_OBJS   += c4.o
+       O_OBJS   += c4.o
   endif
   OX_OBJS  += capiutil.o capidrv.o b1.o b1dma.o
 else
   ifeq ($(CONFIG_ISDN_CAPI),m)
-       O_TARGET += kernelcapi.o
-       OX_OBJS  += kcapi.o
-       M_OBJS   += capi.o kernelcapi.o
-       ifdef CONFIG_ISDN_CAPIFS
-               MX_OBJS   += capifs.o
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_B1ISA
-               M_OBJS   += b1isa.o
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_B1PCI
-               M_OBJS  += b1pci.o
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_T1ISA
-               M_OBJS   += t1isa.o
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_B1PCMCIA
-               MX_OBJS  += b1pcmcia.o
+       O_TARGET += kernelcapi.o
+       OX_OBJS  += kcapi.o
+       M_OBJS   += capi.o kernelcapi.o
+       ifdef CONFIG_ISDN_CAPIFS
+               MX_OBJS   += capifs.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_B1ISA
+               M_OBJS   += b1isa.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_B1PCI
+               M_OBJS  += b1pci.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_T1ISA
+               M_OBJS   += t1isa.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_B1PCMCIA
+               MX_OBJS  += b1pcmcia.o
                ifeq ($(CONFIG_HOTPLUG),y)
                        ifneq ($(CONFIG_PCMCIA),n)
-                               M_OBJS   += avm_cs.o
+                               M_OBJS   += avm_cs.o
                        endif
                endif
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_T1PCI
-               M_OBJS   += t1pci.o
-       endif
-       ifdef CONFIG_ISDN_DRV_AVMB1_C4
-               M_OBJS   += c4.o
-       endif
-       MX_OBJS  += capiutil.o capidrv.o b1.o b1dma.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_T1PCI
+               M_OBJS   += t1pci.o
+       endif
+       ifdef CONFIG_ISDN_DRV_AVMB1_C4
+               M_OBJS   += c4.o
+       endif
+       MX_OBJS  += capiutil.o capidrv.o b1.o b1dma.o
   endif
 endif
 
index f1538b44f55cb2bc7cdd65de636efbf49a736134..3b184c54ea5a12092778923d2d5e349ba66b46e3 100644 (file)
@@ -145,9 +145,7 @@ static dev_link_t *avmcs_attach(void)
     /* The io structure describes IO port mapping */
     link->io.NumPorts1 = 16;
     link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-    link->io.NumPorts2 = 16;
-    link->io.Attributes2 = IO_DATA_PATH_WIDTH_16;
-    link->io.IOAddrLines = 5;
+    link->io.NumPorts2 = 0;
 
     /* Interrupt setup */
     link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
@@ -329,9 +327,10 @@ static void avmcs_config(dev_link_t *link)
                link->conf.ConfigIndex = cf->index;
                link->io.BasePort1 = cf->io.win[0].base;
                link->io.NumPorts1 = cf->io.win[0].len;
+               link->io.NumPorts2 = 0;
                 printk(KERN_INFO "avm_cs: testing i/o %#x-%#x\n",
                        link->io.BasePort1,
-                       link->io.BasePort1+link->io.NumPorts1);
+                       link->io.BasePort1+link->io.NumPorts1-1);
                i = CardServices(RequestIO, link->handle, &link->io);
                if (i == CS_SUCCESS) goto found_port;
            }
@@ -504,7 +503,7 @@ static int avmcs_event(event_t event, int priority,
 
 /*====================================================================*/
 
-int init_module(void)
+static int __init avmcs_init(void)
 {
     servinfo_t serv;
     CardServices(GetCardServicesInfo, &serv);
@@ -517,7 +516,7 @@ int init_module(void)
     return 0;
 }
 
-void cleanup_module(void)
+static void __exit avmcs_exit(void)
 {
     unregister_pccard_driver(&dev_info);
     while (dev_list != NULL) {
@@ -526,3 +525,6 @@ void cleanup_module(void)
        avmcs_detach(dev_list);
     }
 }
+
+module_init(avmcs_init);
+module_exit(avmcs_exit);
index 747b5ea7f2bf1e7fca4282668d4ccf20fcc53351..b55573aeba031ef2609ad536d88a7a3dd8a40685 100644 (file)
@@ -94,6 +94,7 @@
 #include <linux/ioport.h>
 #include <linux/capi.h>
 #include <asm/io.h>
+#include <linux/init.h>
 #include <asm/uaccess.h>
 #include <linux/netdevice.h>
 #include "capilli.h"
 #include "capicmd.h"
 #include "capiutil.h"
 
-static char *revision = "$Revision: 1.16 $";
+static char *revision = "$Revision: 1.20 $";
 
 /* ------------------------------------------------------------- */
 
@@ -728,12 +729,7 @@ EXPORT_SYMBOL(b1_handle_interrupt);
 
 EXPORT_SYMBOL(b1ctl_read_proc);
 
-#ifdef MODULE
-#define b1_init init_module
-void cleanup_module(void);
-#endif
-
-int b1_init(void)
+static int __init b1_init(void)
 {
        char *p;
        char rev[10];
@@ -750,8 +746,9 @@ int b1_init(void)
        return 0;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit b1_exit(void)
 {
 }
-#endif
+
+module_init(b1_init);
+module_exit(b1_exit);
index 6cdc6c5a40ae93812aae372c54d4a53fbd256522..8d8030c39ffe69fbeba67a27d6e8eb862c147a33 100644 (file)
@@ -48,6 +48,7 @@
 #include <linux/ioport.h>
 #include <linux/capi.h>
 #include <asm/io.h>
+#include <linux/init.h>
 #include <asm/uaccess.h>
 #include <linux/netdevice.h>
 #include "capilli.h"
@@ -55,7 +56,7 @@
 #include "capicmd.h"
 #include "capiutil.h"
 
-static char *revision = "$Revision: 1.9 $";
+static char *revision = "$Revision: 1.11 $";
 
 /* ------------------------------------------------------------- */
 
@@ -978,11 +979,6 @@ EXPORT_SYMBOL(b1dma_release_appl);
 EXPORT_SYMBOL(b1dma_send_message);
 EXPORT_SYMBOL(b1dmactl_read_proc);
 
-#ifdef MODULE
-#define b1dma_init init_module
-void cleanup_module(void);
-#endif
-
 int b1dma_init(void)
 {
        char *p;
@@ -1000,8 +996,9 @@ int b1dma_init(void)
        return 0;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+void b1dma_exit(void)
 {
 }
-#endif
+
+module_init(b1dma_init);
+module_exit(b1dma_exit);
index 486a0f28d10c46d9d760572436a93704a16688e8..07301a3e5623270798be18258426e470c64ee1f5 100644 (file)
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/capi.h>
+#include <linux/init.h>
 #include <asm/io.h>
 #include "capicmd.h"
 #include "capiutil.h"
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.8 $";
+static char *revision = "$Revision: 1.10 $";
 
 /* ------------------------------------------------------------- */
 
@@ -260,12 +261,7 @@ static struct capi_driver b1isa_driver = {
     add_card: b1isa_add_card,
 };
 
-#ifdef MODULE
-#define b1isa_init init_module
-void cleanup_module(void);
-#endif
-
-int b1isa_init(void)
+static int __init b1isa_init(void)
 {
        struct capi_driver *driver = &b1isa_driver;
        char *p;
@@ -292,9 +288,10 @@ int b1isa_init(void)
        return retval;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit b1isa_exit(void)
 {
     detach_capi_driver(&b1isa_driver);
 }
-#endif
+
+module_init(b1isa_init);
+module_exit(b1isa_exit);
index 27af2e27b80a08bc05d8b7d617fda3a9f6fd03fc..e86dfdb7b100d55ac4295b915ad3924be8817d19 100644 (file)
 #include <linux/pci.h>
 #include <linux/capi.h>
 #include <asm/io.h>
+#include <linux/init.h>
 #include "capicmd.h"
 #include "capiutil.h"
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.27 $";
+static char *revision = "$Revision: 1.29 $";
 
 /* ------------------------------------------------------------- */
 
@@ -481,11 +482,6 @@ static struct capi_driver b1pciv4_driver = {
 
 #endif /* CONFIG_ISDN_DRV_AVMB1_B1PCIV4 */
 
-#ifdef MODULE
-#define b1pci_init init_module
-void cleanup_module(void);
-#endif
-
 static int ncards = 0;
 
 static int add_card(struct pci_dev *dev)
@@ -548,7 +544,7 @@ static int add_card(struct pci_dev *dev)
        return retval;
 }
 
-int b1pci_init(void)
+static int __init b1pci_init(void)
 {
        struct capi_driver *driver = &b1pci_driver;
 #ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
@@ -640,12 +636,13 @@ int b1pci_init(void)
 #endif
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit b1pci_exit(void)
 {
     detach_capi_driver(&b1pci_driver);
 #ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
     detach_capi_driver(&b1pciv4_driver);
 #endif
 }
-#endif
+
+module_init(b1pci_init);
+module_exit(b1pci_exit);
index 20b8515482fd5594f798fc81297c0398a7754a73..1bb50b0d4701395ded56875a74ee6c7154564d6e 100644 (file)
@@ -75,6 +75,7 @@
 #include <linux/mm.h>
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
+#include <linux/init.h>
 #include <asm/io.h>
 #include <linux/capi.h>
 #include <linux/b1pcmcia.h>
@@ -83,7 +84,7 @@
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.10 $";
+static char *revision = "$Revision: 1.12 $";
 
 /* ------------------------------------------------------------- */
 
@@ -300,12 +301,7 @@ EXPORT_SYMBOL(b1pcmcia_delcard);
 
 /* ------------------------------------------------------------- */
 
-#ifdef MODULE
-#define b1pcmcia_init init_module
-void cleanup_module(void);
-#endif
-
-int b1pcmcia_init(void)
+static int __init b1pcmcia_init(void)
 {
        struct capi_driver *driver = &b1pcmcia_driver;
        char *p;
@@ -332,9 +328,10 @@ int b1pcmcia_init(void)
        return retval;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit b1pcmcia_exit(void)
 {
     detach_capi_driver(&b1pcmcia_driver);
 }
-#endif
+
+module_init(b1pcmcia_init);
+module_exit(b1pcmcia_exit);
index 7f13400019c97e7247d1ca195928d6fe357cace3..67deb1d9311f76664e8f5191866fb1f21329e827 100644 (file)
@@ -80,6 +80,7 @@
 #include <linux/ioport.h>
 #include <linux/pci.h>
 #include <linux/capi.h>
+#include <linux/init.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
 #include <linux/netdevice.h>
@@ -88,7 +89,7 @@
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.18 $";
+static char *revision = "$Revision: 1.20 $";
 
 #undef CONFIG_C4_DEBUG
 #undef CONFIG_C4_POLLDEBUG
@@ -1327,15 +1328,9 @@ static struct capi_driver c4_driver = {
 };
 
 
-#ifdef MODULE
-#define c4_init init_module
-void cleanup_module(void);
-#endif
-
-
 static int ncards = 0;
 
-int c4_init(void)
+static int __init c4_init(void)
 {
        struct capi_driver *driver = &c4_driver;
        struct pci_dev *dev = NULL;
@@ -1419,9 +1414,10 @@ int c4_init(void)
 #endif
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit c4_exit(void)
 {
     detach_capi_driver(&c4_driver);
 }
-#endif
+
+module_init(c4_init);
+module_exit(c4_exit);
index 69385b4df28b92ef350a25ce19f111af9d6f7b75..22f63442cb3c358314021f5d1099c64e16b816a8 100644 (file)
@@ -1,11 +1,32 @@
 /*
- * $Id: capi.c,v 1.39 2000/07/24 13:42:50 calle Exp $
+ * $Id: capi.c,v 1.44 2000/11/25 17:00:59 kai Exp $
  *
  * CAPI 2.0 Interface for Linux
  *
  * Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
  *
  * $Log: capi.c,v $
+ * Revision 1.44  2000/11/25 17:00:59  kai
+ * compatibility cleanup - final part for the time being
+ *
+ * Revision 1.43  2000/11/23 20:45:14  kai
+ * fixed module_init/exit stuff
+ * Note: compiled-in kernel doesn't work pre 2.2.18 anymore.
+ *
+ * Revision 1.42  2000/11/19 17:03:55  kai
+ * compatibility cleanup - part 5
+ *
+ * Revision 1.41  2000/11/01 14:05:02  calle
+ * - use module_init/module_exit from linux/init.h.
+ * - all static struct variables are initialized with "membername:" now.
+ * - avm_cs.c, let it work with newer pcmcia-cs.
+ *
+ * Revision 1.40  2000/10/24 15:15:04  calle
+ * Workaround: pppd calls restoretty before reseting the ldisc and
+ *   ldisc "ppp_sync" didn't support this. So we call n_tty_ioctl
+ *   in the driver ioctl function. (remember: driver ioctl function is
+ *   only called if ldisc ioctl function did not handle the call)
+ *
  * Revision 1.39  2000/07/24 13:42:50  calle
  * - lock_kernel/unlock_kernel for _release functions. (from 2.4)
  *
 #include <linux/poll.h>
 #include <linux/capi.h>
 #include <linux/kernelcapi.h>
+#include <linux/init.h>
 #include <linux/devfs_fs_kernel.h>
 #include <linux/init.h>
 #include "capiutil.h"
 #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */
 #include <linux/slab.h>
 
-static char *revision = "$Revision: 1.39 $";
+static char *revision = "$Revision: 1.44 $";
 
 MODULE_AUTHOR("Carsten Paeth (calle@calle.in-berlin.de)");
 
@@ -1667,7 +1689,13 @@ int capinc_tty_chars_in_buffer(struct tty_struct *tty)
 int capinc_tty_ioctl(struct tty_struct *tty, struct file * file,
                    unsigned int cmd, unsigned long arg)
 {
-       return -ENOIOCTLCMD;
+       int error = 0;
+       switch (cmd) {
+       default:
+               error = n_tty_ioctl (tty, file, cmd, arg);
+               break;
+       }
+       return error;
 }
 
 void capinc_tty_set_termios(struct tty_struct *tty, struct termios * old)
@@ -1960,7 +1988,7 @@ static void __exit proc_exit(void)
 /* -------- init function and module interface ---------------------- */
 
 
-static void alloc_exit(void)
+static void __exit alloc_exit(void)
 {
        if (capidev_cachep) {
                (void)kmem_cache_destroy(capidev_cachep);
@@ -2060,7 +2088,7 @@ static struct capi_interface_user cuser = {
 
 static char rev[10];
 
-int __init capi_init(void)
+static int __init capi_init(void)
 {
        char *p;
 
@@ -2173,8 +2201,5 @@ static void __exit capi_exit(void)
        printk(KERN_NOTICE "capi: Rev%s: unloaded\n", rev);
 }
 
-#ifdef MODULE
 module_init(capi_init);
-#endif
 module_exit(capi_exit);
-
index 6f1d9a42a55ae8e037e3c8aa50f4098d320763e2..7221784858dc29e49d1de6070aaf7b19ec541acc 100644 (file)
@@ -1,11 +1,14 @@
 /*
- * $Id: capidev.h,v 1.5 2000/03/03 15:50:42 calle Exp $
+ * $Id: capidev.h,v 1.6 2000/11/25 17:00:59 kai Exp $
  *
  * CAPI 2.0 Interface for Linux
  *
  * (c) Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
  *
  * $Log: capidev.h,v $
+ * Revision 1.6  2000/11/25 17:00:59  kai
+ * compatibility cleanup - final part for the time being
+ *
  * Revision 1.5  2000/03/03 15:50:42  calle
  * - kernel CAPI:
  *   - Changed parameter "param" in capi_signal from __u32 to void *.
index e512c8672e9cc3c91a55d7ed132c0e70ad4f2a80..24eeb3739fd96b7326a4f69ce8ae4f8eb214d1f9 100644 (file)
@@ -1,11 +1,23 @@
 /*
- * $Id: capidrv.c,v 1.36 2000/06/26 15:13:41 keil Exp $
+ * $Id: capidrv.c,v 1.39 2000/11/23 20:45:14 kai Exp $
  *
  * ISDN4Linux Driver, using capi20 interface (kernelcapi)
  *
  * Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de)
  *
  * $Log: capidrv.c,v $
+ * Revision 1.39  2000/11/23 20:45:14  kai
+ * fixed module_init/exit stuff
+ * Note: compiled-in kernel doesn't work pre 2.2.18 anymore.
+ *
+ * Revision 1.38  2000/11/14 08:43:07  calle
+ * Bugfix for v110. Connectparamters where setup for sync ...
+ *
+ * Revision 1.37  2000/11/01 14:05:02  calle
+ * - use module_init/module_exit from linux/init.h.
+ * - all static struct variables are initialized with "membername:" now.
+ * - avm_cs.c, let it work with newer pcmcia-cs.
+ *
  * Revision 1.36  2000/06/26 15:13:41  keil
  * features should be or'ed
  *
 #include "capicmd.h"
 #include "capidrv.h"
 
-static char *revision = "$Revision: 1.36 $";
+static char *revision = "$Revision: 1.39 $";
 static int debugmode = 0;
 
 MODULE_AUTHOR("Carsten Paeth <calle@calle.in-berlin.de>");
@@ -2468,7 +2480,7 @@ static struct capi_interface_user cuser = {
        callback: lower_callback
 };
 
-int __init capidrv_init(void)
+static int __init capidrv_init(void)
 {
        struct capi_register_params rparam;
        capi_profile profile;
@@ -2550,8 +2562,5 @@ static void __exit capidrv_exit(void)
        printk(KERN_NOTICE "capidrv: Rev%s: unloaded\n", rev);
 }
 
-#ifdef MODULE
 module_init(capidrv_init);
-#endif
 module_exit(capidrv_exit);
-
index b932c17e00190df62f8b4c0e6b7be2d88db38709..9b64c9a236d3923ea7e12e3b39f3f6c347d2c22b 100644 (file)
@@ -72,7 +72,7 @@
 
 MODULE_AUTHOR("Carsten Paeth <calle@calle.de>");
 
-static char *revision = "$Revision: 1.10 $";
+static char *revision = "$Revision: 1.14 $";
 
 struct capifs_ncci {
        struct inode *inode;
@@ -558,7 +558,7 @@ void capifs_free_ncci(char type, unsigned int num)
        }
 }
 
-int __init capifs_init(void)
+static int __init capifs_init(void)
 {
        char rev[10];
        char *p;
@@ -587,7 +587,7 @@ int __init capifs_init(void)
        return 0;
 }
 
-void capifs_exit(void)
+static void __exit capifs_exit(void)
 {
        unregister_filesystem(&capifs_fs_type);
 }
@@ -595,16 +595,5 @@ void capifs_exit(void)
 EXPORT_SYMBOL(capifs_new_ncci);
 EXPORT_SYMBOL(capifs_free_ncci);
 
-#ifdef MODULE
-
-int init_module(void)
-{
-       return capifs_init();
-}
-
-void cleanup_module(void)
-{
-       capifs_exit();
-}
-
-#endif
+module_init(capifs_init);
+module_exit(capifs_exit);
index 6f10025f52f44ea8ee2ea1ec98c825a63b0c604b..2ed1ec1cb73ffb8b041b0f4e06e584466b7a89b4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: capiutil.c,v 1.11 2000/03/03 15:50:42 calle Exp $
+ * $Id: capiutil.c,v 1.13 2000/11/23 20:45:14 kai Exp $
  *
  * CAPI 2.0 convert capi message to capi message struct
  *
@@ -7,6 +7,15 @@
  * Rewritten for Linux 1996 by Carsten Paeth (calle@calle.in-berlin.de)
  *
  * $Log: capiutil.c,v $
+ * Revision 1.13  2000/11/23 20:45:14  kai
+ * fixed module_init/exit stuff
+ * Note: compiled-in kernel doesn't work pre 2.2.18 anymore.
+ *
+ * Revision 1.12  2000/11/01 14:05:02  calle
+ * - use module_init/module_exit from linux/init.h.
+ * - all static struct variables are initialized with "membername:" now.
+ * - avm_cs.c, let it work with newer pcmcia-cs.
+ *
  * Revision 1.11  2000/03/03 15:50:42  calle
  * - kernel CAPI:
  *   - Changed parameter "param" in capi_signal from __u32 to void *.
@@ -81,6 +90,7 @@
 #include <linux/stddef.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/init.h>
 #include <asm/segment.h>
 #include <linux/config.h>
 
@@ -978,7 +988,6 @@ char *capi_cmsg2str(_cmsg * cmsg)
        return buf;
 }
 
-
 EXPORT_SYMBOL(capi_cmsg2message);
 EXPORT_SYMBOL(capi_message2cmsg);
 EXPORT_SYMBOL(capi_cmsg_header);
@@ -987,15 +996,14 @@ EXPORT_SYMBOL(capi_cmsg2str);
 EXPORT_SYMBOL(capi_message2str);
 EXPORT_SYMBOL(capi_info2str);
 
-#ifdef MODULE
-
-int init_module(void)
+static int __init capiutil_init(void)
 {
        return 0;
 }
 
-void cleanup_module(void)
+static void __exit capiutil_exit(void)
 {
 }
 
-#endif
+module_init(capiutil_init);
+module_exit(capiutil_exit);
index fd18bf93c56e019a9ca59d47b77ed90cc057d568..adbaf984e2f6384fb26e0582282c9d1a0b45391b 100644 (file)
 #include <linux/capi.h>
 #include <linux/kernelcapi.h>
 #include <linux/locks.h>
+#include <linux/init.h>
 #include <asm/uaccess.h>
 #include "capicmd.h"
 #include "capiutil.h"
 #include <linux/b1lli.h>
 #endif
 
-static char *revision = "$Revision: 1.18 $";
+static char *revision = "$Revision: 1.21 $";
 
 /* ------------------------------------------------------------- */
 
@@ -1724,36 +1725,11 @@ EXPORT_SYMBOL(detach_capi_interface);
 EXPORT_SYMBOL(attach_capi_driver);
 EXPORT_SYMBOL(detach_capi_driver);
 
-#ifndef MODULE
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1ISA
-extern int b1isa_init(void);
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCI
-extern int b1pci_init(void);
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_T1ISA
-extern int t1isa_init(void);
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCMCIA
-extern int b1pcmcia_init(void);
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_T1PCI
-extern int t1pci_init(void);
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_C4
-extern int c4_init(void);
-#endif
-#endif
-
 /*
  * init / exit functions
  */
 
-#ifdef MODULE
-#define kcapi_init init_module
-#endif
-
-int kcapi_init(void)
+static int __init kcapi_init(void)
 {
        char *p;
        char rev[10];
@@ -1761,7 +1737,6 @@ int kcapi_init(void)
        MOD_INC_USE_COUNT;
 
        skb_queue_head_init(&recv_queue);
-       /* init_bh(CAPI_BH, do_capi_bh); */
 
        tq_state_notify.routine = notify_handler;
        tq_state_notify.data = 0;
@@ -1782,31 +1757,12 @@ int kcapi_init(void)
         printk(KERN_NOTICE "CAPI-driver Rev%s: loaded\n", rev);
 #else
        printk(KERN_NOTICE "CAPI-driver Rev%s: started\n", rev);
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1ISA
-       (void)b1isa_init();
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCI
-       (void)b1pci_init();
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_T1ISA
-       (void)t1isa_init();
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCMCIA
-       (void)b1pcmcia_init();
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_T1PCI
-       (void)t1pci_init();
-#endif
-#ifdef CONFIG_ISDN_DRV_AVMB1_C4
-       (void)c4_init();
-#endif
 #endif
        MOD_DEC_USE_COUNT;
        return 0;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit kcapi_exit(void)
 {
        char rev[10];
        char *p;
@@ -1822,4 +1778,6 @@ void cleanup_module(void)
         proc_capi_exit();
        printk(KERN_NOTICE "CAPI-driver Rev%s: unloaded\n", rev);
 }
-#endif
+
+module_init(kcapi_init);
+module_exit(kcapi_exit);
index ff77c5f20c93dca493680df1901563483f33ebb9..c548d9dcff7491a0e73914646cc47fd43735c31b 100644 (file)
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.15 $";
+static char *revision = "$Revision: 1.16 $";
 
 /* ------------------------------------------------------------- */
 
@@ -613,12 +613,7 @@ static struct capi_driver t1isa_driver = {
     add_card: t1isa_add_card,
 };
 
-#ifdef MODULE
-#define t1isa_init init_module
-void cleanup_module(void);
-#endif
-
-int t1isa_init(void)
+static int __init t1isa_init(void)
 {
        struct capi_driver *driver = &t1isa_driver;
        char *p;
@@ -646,9 +641,10 @@ int t1isa_init(void)
        return retval;
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit t1isa_exit(void)
 {
     detach_capi_driver(&t1isa_driver);
 }
-#endif
+
+module_init(t1isa_init);
+module_exit(t1isa_exit);
index 50ecc729df5fe54b5f976734b19e2cae012ce481..5b3b263e59c4fd062f7ea8916d3212c64218bcbd 100644 (file)
 #include <linux/ioport.h>
 #include <linux/pci.h>
 #include <linux/capi.h>
+#include <linux/init.h>
 #include <asm/io.h>
 #include "capicmd.h"
 #include "capiutil.h"
 #include "capilli.h"
 #include "avmcard.h"
 
-static char *revision = "$Revision: 1.11 $";
+static char *revision = "$Revision: 1.13 $";
 
 #undef CONFIG_T1PCI_DEBUG
 #undef CONFIG_T1PCI_POLLDEBUG
@@ -275,14 +276,9 @@ static struct capi_driver t1pci_driver = {
     add_card: 0, /* no add_card function */
 };
 
-#ifdef MODULE
-#define t1pci_init init_module
-void cleanup_module(void);
-#endif
-
 static int ncards = 0;
 
-int t1pci_init(void)
+static int __init t1pci_init(void)
 {
        struct capi_driver *driver = &t1pci_driver;
        struct pci_dev *dev = NULL;
@@ -320,7 +316,7 @@ int t1pci_init(void)
                struct capicardparams param;
 
                param.port = pci_resource_start(dev, 1);
-               param.irq = dev->irq;
+               param.irq = dev->irq;
                param.membase = pci_resource_start(dev, 0);
 
                retval = pci_enable_device (dev);
@@ -364,9 +360,10 @@ int t1pci_init(void)
 #endif
 }
 
-#ifdef MODULE
-void cleanup_module(void)
+static void __exit t1pci_exit(void)
 {
     detach_capi_driver(&t1pci_driver);
 }
-#endif
+
+module_init(t1pci_init);
+module_exit(t1pci_exit);
index 8cff1683ae410a350f8d4ca5cfa83b3eff56e62f..492f8f53cd4e22214a198494accbf21c6141aae3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: divert_procfs.c,v 1.10 2000/11/13 22:51:47 kai Exp $
+ * $Id: divert_procfs.c,v 1.11 2000/11/25 17:01:00 kai Exp $
  *
  * Filesystem handling for the diversion supplementary services.
  *
index d4fb0452adf99614f79b19ba38dac32a9c126665..1a8c75ace33e6882b98326478cb644b71174edcd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: amd7930.c,v 1.4 2000/06/26 08:59:12 keil Exp $
+/* $Id: amd7930.c,v 1.5 2000/11/24 17:05:37 kai Exp $
  *
  * HiSax ISDN driver - chip specific routines for AMD 7930
  *
@@ -94,7 +94,7 @@
 #include "rawhdlc.h"
 #include <linux/interrupt.h>
 
-static const char *amd7930_revision = "$Revision: 1.4 $";
+static const char *amd7930_revision = "$Revision: 1.5 $";
 
 #define RCV_BUFSIZE    1024    /* Size of raw receive buffer in bytes */
 #define RCV_BUFBLKS    4       /* Number of blocks to divide buffer into
@@ -734,8 +734,8 @@ amd7930_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_amd7930(struct IsdnCard *card))
+int __init
+setup_amd7930(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 7708afdb636503fd9b73986c959fc58f406cf175..4ff4d7a4fd9538c0e0383d8ad0fc3d0433ca2c1b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: arcofi.c,v 1.11 2000/06/26 08:59:12 keil Exp $
+/* $Id: arcofi.c,v 1.12 2000/11/25 17:01:00 kai Exp $
  *
  * arcofi.c   Ansteuerung ARCOFI 2165
  *
index b86f5db6a0761b46b72e296e39a94661245152a2..01b668d8ef307e909f6d42f66ce743299d95bdc2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: asuscom.c,v 1.10 2000/06/26 08:59:12 keil Exp $
+/* $Id: asuscom.c,v 1.11 2000/11/24 17:05:37 kai Exp $
  *
  * asuscom.c     low level stuff for ASUSCOM NETWORK INC. ISDNLink cards
  *
@@ -11,6 +11,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "ipac.h"
@@ -19,7 +20,7 @@
 
 extern const char *CardType[];
 
-const char *Asuscom_revision = "$Revision: 1.10 $";
+const char *Asuscom_revision = "$Revision: 1.11 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -306,8 +307,8 @@ Asus_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_asuscom(struct IsdnCard *card))
+int __init
+setup_asuscom(struct IsdnCard *card)
 {
        int bytecnt;
        struct IsdnCardState *cs = card->cs;
index cc3ce44909fb4a42731b70169179890353a26afd..e2765970ec63bb79d8e04147ccf65d62937185ba 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: avm_a1.c,v 2.12 2000/06/26 08:59:12 keil Exp $
+/* $Id: avm_a1.c,v 2.13 2000/11/24 17:05:37 kai Exp $
  *
  * avm_a1.c     low level stuff for AVM A1 (Fritz) isdn cards
  *
@@ -8,13 +8,14 @@
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-static const char *avm_revision = "$Revision: 2.12 $";
+static const char *avm_revision = "$Revision: 2.13 $";
 
 #define         AVM_A1_STAT_ISAC       0x01
 #define         AVM_A1_STAT_HSCX       0x02
@@ -171,8 +172,8 @@ AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_avm_a1(struct IsdnCard *card))
+int __init
+setup_avm_a1(struct IsdnCard *card)
 {
        u_char val;
        struct IsdnCardState *cs = card->cs;
index a9a132b98557ef4137223db87b4691df9480de6a..2f813402f5ba3f91e839722b46b64d86b6c4ccc3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: avm_a1p.c,v 2.6 2000/06/26 08:59:12 keil Exp $
+/* $Id: avm_a1p.c,v 2.7 2000/11/24 17:05:37 kai Exp $
  *
  * avm_a1p.c    low level stuff for the following AVM cards:
  *              A1 PCMCIA
@@ -10,6 +10,7 @@
  *  This file is (c) under GNU PUBLIC LICENSE
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
@@ -52,7 +53,7 @@
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
 
-static const char *avm_revision = "$Revision: 2.6 $";
+static const char *avm_revision = "$Revision: 2.7 $";
 
 static inline u_char
 ReadISAC(struct IsdnCardState *cs, u_char offset)
@@ -244,8 +245,8 @@ AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return 0;
 }
 
-__initfunc(int
-setup_avm_a1_pcmcia(struct IsdnCard *card))
+int __devinit
+setup_avm_a1_pcmcia(struct IsdnCard *card)
 {
        u_char model, vers;
        struct IsdnCardState *cs = card->cs;
index 4302585dcec1fa6ac2d9656b163b8f254fe4389c..55219d79aed0cbfdce796de7527c3d7bc4cc24f5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: avm_pci.c,v 1.18 2000/08/20 07:34:04 keil Exp $
+/* $Id: avm_pci.c,v 1.22 2000/11/24 17:05:37 kai Exp $
  *
  * avm_pci.c    low level stuff for AVM Fritz!PCI and ISA PnP isdn cards
  *              Thanks to AVM, Berlin for informations
@@ -10,6 +10,7 @@
  */
 #define __NO_VERSION__
 #include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "isdnl1.h"
@@ -17,7 +18,7 @@
 #include <linux/interrupt.h>
 
 extern const char *CardType[];
-static const char *avm_pci_rev = "$Revision: 1.18 $";
+static const char *avm_pci_rev = "$Revision: 1.22 $";
 
 #define  AVM_FRITZ_PCI         1
 #define  AVM_FRITZ_PNP         2
@@ -649,8 +650,8 @@ setstack_hdlc(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
-HISAX_INITFUNC(void
-clear_pending_hdlc_ints(struct IsdnCardState *cs))
+void __init
+clear_pending_hdlc_ints(struct IsdnCardState *cs)
 {
        u_int val;
 
@@ -679,8 +680,8 @@ clear_pending_hdlc_ints(struct IsdnCardState *cs))
        }
 }
 
-HISAX_INITFUNC(void
-inithdlc(struct IsdnCardState *cs))
+void __init
+inithdlc(struct IsdnCardState *cs)
 {
        cs->bcs[0].BC_SetStack = setstack_hdlc;
        cs->bcs[1].BC_SetStack = setstack_hdlc;
@@ -764,10 +765,10 @@ AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_avm __initdata = NULL;
+static struct pci_dev *dev_avm __initdata;
 
-__initfunc(int
-setup_avm_pcipnp(struct IsdnCard *card))
+int __init
+setup_avm_pcipnp(struct IsdnCard *card)
 {
        u_int val, ver;
        struct IsdnCardState *cs = card->cs;
index 75729c2828ea7393d34448b8fdba41caaf54a85a..b641e7ecd024003e6b03f40b56df35b198f7e243 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bkm_a4t.c,v 1.11 2000/06/26 08:59:12 keil Exp $
+/* $Id: bkm_a4t.c,v 1.13 2000/11/24 17:05:37 kai Exp $
  * bkm_a4t.c    low level stuff for T-Berkom A4T
  *              derived from the original file sedlbauer.c
  *              derived from the original file niccy.c
@@ -13,6 +13,7 @@
 #define __NO_VERSION__
 
 #include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
@@ -23,7 +24,7 @@
 
 extern const char *CardType[];
 
-const char *bkm_a4t_revision = "$Revision: 1.11 $";
+const char *bkm_a4t_revision = "$Revision: 1.13 $";
 
 
 static inline u_char
@@ -263,10 +264,10 @@ BKM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return (0);
 }
 
-static struct pci_dev *dev_a4t __initdata = NULL;
+static struct pci_dev *dev_a4t __initdata;
 
-__initfunc(int
-          setup_bkm_a4t(struct IsdnCard *card))
+int __init
+setup_bkm_a4t(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 6f00073c6a28228e3082c3a02d414e2655e8f345..010b9e9ed2a803d9ac3c862a5a2c8eb5080e0774 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bkm_a8.c,v 1.12 2000/06/26 08:59:12 keil Exp $
+/* $Id: bkm_a8.c,v 1.14 2000/11/24 17:05:37 kai Exp $
  * bkm_a8.c     low level stuff for Scitel Quadro (4*S0, passive)
  *              derived from the original file sedlbauer.c
  *              derived from the original file niccy.c
@@ -12,6 +12,7 @@
 #define __NO_VERSION__
 
 #include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "ipac.h"
@@ -26,7 +27,7 @@
 
 extern const char *CardType[];
 
-const char sct_quadro_revision[] = "$Revision: 1.12 $";
+const char sct_quadro_revision[] = "$Revision: 1.14 $";
 
 static const char *sct_quadro_subtypes[] =
 {
@@ -268,8 +269,8 @@ BKM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return (0);
 }
 
-__initfunc(int
-sct_alloc_io(u_int adr, u_int len))
+int __init
+sct_alloc_io(u_int adr, u_int len)
 {
        if (check_region(adr, len)) {
                printk(KERN_WARNING
@@ -282,17 +283,17 @@ sct_alloc_io(u_int adr, u_int len))
        return(0);
 }
 
-static struct pci_dev *dev_a8 __initdata = NULL;
-static u16  sub_vendor_id __initdata = 0;
-static u16  sub_sys_id __initdata = 0;
-static u_char pci_bus __initdata = 0;
-static u_char pci_device_fn __initdata = 0;
-static u_char pci_irq __initdata = 0;
+static struct pci_dev *dev_a8 __initdata;
+static u16  sub_vendor_id __initdata;
+static u16  sub_sys_id __initdata;
+static u_char pci_bus __initdata;
+static u_char pci_device_fn __initdata;
+static u_char pci_irq __initdata;
 
 #endif /* CONFIG_PCI */
 
-__initfunc(int
-setup_sct_quadro(struct IsdnCard *card))
+int __init
+setup_sct_quadro(struct IsdnCard *card)
 {
 #if CONFIG_PCI
        struct IsdnCardState *cs = card->cs;
index e513c81a6731a6aeb4b5e5b5aa4a2933a61eb847..6452da4c630955416680d6e8f31f284f66887f70 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: bkm_ax.h,v 1.4 2000/06/26 08:59:12 keil Exp $
+/* $Id: bkm_ax.h,v 1.5 2000/11/19 17:41:03 kai Exp $
  * bkm_ax.h   low level decls for T-Berkom cards A4T and Scitel Quadro (4*S0, passive)
  *
  * Author     Roland Klabunde (R.Klabunde@Berkom.de)
index 4d329039229216199efbbdd1118acf8eed12e778..ced19e429a28da77c52d71e28406dc832a0238fa 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: callc.c,v 2.47 2000/06/26 08:59:12 keil Exp $
+/* $Id: callc.c,v 2.51 2000/11/24 17:05:37 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
@@ -11,8 +11,8 @@
  *              Fritz Elfert
  *
  */
-
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "../avmb1/capicmd.h"  /* this should be moved in a common place */
 
@@ -20,7 +20,7 @@
 #define MOD_USE_COUNT ( GET_USE_COUNT (&__this_module))
 #endif /* MODULE */
 
-const char *lli_revision = "$Revision: 2.47 $";
+const char *lli_revision = "$Revision: 2.51 $";
 
 extern struct IsdnCard cards[];
 extern int nrcards;
@@ -30,10 +30,8 @@ extern void HiSax_mod_inc_use_count(void);
 static int init_b_st(struct Channel *chanp, int incoming);
 static void release_b_st(struct Channel *chanp);
 
-static struct Fsm callcfsm =
-{NULL, 0, 0, NULL, NULL};
-
-static int chancount = 0;
+static struct Fsm callcfsm;
+static int chancount;
 
 /* experimental REJECT after ALERTING for CALLBACK to beat the 4s delay */
 #define ALERT_REJECT 0
@@ -782,7 +780,7 @@ lli_failure_a(struct FsmInst *fi, int event, void *arg)
 }
 
 /* *INDENT-OFF* */
-static struct FsmNode fnlist[] HISAX_INITDATA =
+static struct FsmNode fnlist[] __initdata =
 {
         {ST_NULL,               EV_DIAL,                lli_prep_dialout},
         {ST_NULL,               EV_RESUME,              lli_resume},
@@ -852,8 +850,8 @@ static struct FsmNode fnlist[] HISAX_INITDATA =
 
 #define FNCOUNT (sizeof(fnlist)/sizeof(struct FsmNode))
 
-HISAX_INITFUNC(void
-CallcNew(void))
+void __init
+CallcNew(void)
 {
        callcfsm.state_count = STATE_COUNT;
        callcfsm.event_count = EVENT_COUNT;
@@ -880,6 +878,7 @@ release_b_st(struct Channel *chanp)
                                releasestack_isdnl2(st);
                                break;
                        case (ISDN_PROTO_L2_HDLC):
+                       case (ISDN_PROTO_L2_HDLC_56K):
                        case (ISDN_PROTO_L2_TRANS):
                        case (ISDN_PROTO_L2_MODEM):
                        case (ISDN_PROTO_L2_FAX):
@@ -1273,6 +1272,9 @@ init_b_st(struct Channel *chanp, int incoming)
                case (ISDN_PROTO_L2_HDLC):
                        st->l1.mode = L1_MODE_HDLC;
                        break;
+               case (ISDN_PROTO_L2_HDLC_56K):
+                       st->l1.mode = L1_MODE_HDLC_56K;
+                       break;
                case (ISDN_PROTO_L2_TRANS):
                        st->l1.mode = L1_MODE_TRANS;
                        break;
@@ -1309,6 +1311,7 @@ init_b_st(struct Channel *chanp, int incoming)
                        st->l2.debug = chanp->debug & 64;
                        break;
                case (ISDN_PROTO_L2_HDLC):
+               case (ISDN_PROTO_L2_HDLC_56K):
                case (ISDN_PROTO_L2_TRANS):
                case (ISDN_PROTO_L2_MODEM):
                case (ISDN_PROTO_L2_FAX):
index 614f145cb266164e03433c49c34b9b636fa09253..d889792389ef40f990c169f8d294dbe0ddcbc4a1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: config.c,v 2.50 2000/07/04 10:24:32 keil Exp $
+/* $Id: config.c,v 2.57 2000/11/25 17:01:00 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
@@ -66,6 +66,7 @@
  *   36 Winbond 6692 PCI        none
  *   37 HFC 2BDS0 S+/SP         p0=irq p1=iobase
  *   38 Travers Technologies NETspider-U PCI card
+ *   39 HFC 2BDS0-SP PCMCIA     p0=irq p1=iobase
  *
  * protocol can be either ISDN_PTYPE_EURO or ISDN_PTYPE_1TR6 or ISDN_PTYPE_NI1
  *
@@ -81,7 +82,7 @@ const char *CardType[] =
  "AMD 7930", "NICCY", "S0Box", "AVM A1 (PCMCIA)", "AVM Fritz PnP/PCI",
  "Sedlbauer Speed Fax +", "Siemens I-Surf", "Acer P10", "HST Saphir",
  "Telekom A4T", "Scitel Quadro", "Gazel", "HFC 2BDS0 PCI", "Winbond 6692",
- "HFC 2BDS0 SX", "NETspider-U",
+ "HFC 2BDS0 SX", "NETspider-U", "HFC-2BDS0-SP PCMCIA",
 };
 
 void HiSax_closecard(int cardnr);
@@ -221,6 +222,8 @@ EXPORT_SYMBOL(sedl_init_pcmcia);
 #undef DEFAULT_CFG
 #define DEFAULT_CARD ISDN_CTYPE_HFC_SX
 #define DEFAULT_CFG {5,0x2E0,0,0}
+int hfc_init_pcmcia(void*, int, int*, int);
+EXPORT_SYMBOL(hfc_init_pcmcia);
 #endif
 
 
@@ -336,18 +339,14 @@ struct IsdnCard cards[] =
        EMPTY_CARD,
 };
 
-static char HiSaxID[64] HISAX_INITDATA = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" \
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" \
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-char *HiSax_id HISAX_INITDATA = HiSaxID;
+static char HiSaxID[64] __devinitdata;
+
+char *HiSax_id __devinitdata = HiSaxID;
 #ifdef MODULE
 /* Variables for insmod */
-static int type[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
-static int protocol[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
-static int io[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
+static int type[8] __devinitdata;
+static int protocol[8] __devinitdata;
+static int io[8] __devinitdata;
 #undef IO0_IO1
 #ifdef CONFIG_HISAX_16_3
 #define IO0_IO1
@@ -357,16 +356,12 @@ static int io[] HISAX_INITDATA =
 #define IO0_IO1
 #endif
 #ifdef IO0_IO1
-static int io0[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
-static int io1[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
+static int io0[8] __devinitdata;
+static int io1[8] __devinitdata;
 #endif
-static int irq[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
-static int mem[] HISAX_INITDATA =
-{0, 0, 0, 0, 0, 0, 0, 0};
-static char *id HISAX_INITDATA = HiSaxID;
+static int irq[8] __devinitdata;
+static int mem[8] __devinitdata;
+static char *id __devinitdata = HiSaxID;
 
 MODULE_AUTHOR("Karsten Keil");
 MODULE_PARM(type, "1-8i");
@@ -381,7 +376,7 @@ MODULE_PARM(io1, "1-8i");
 #endif /* IO0_IO1 */
 #endif /* MODULE */
 
-int nrcards;
+static int nrcards;
 
 extern char *l1_revision;
 extern char *l2_revision;
@@ -389,8 +384,8 @@ extern char *l3_revision;
 extern char *lli_revision;
 extern char *tei_revision;
 
-HISAX_INITFUNC(char *
-HiSax_getrev(const char *revision))
+char *
+HiSax_getrev(const char *revision)
 {
        char *rev;
        char *p;
@@ -404,8 +399,8 @@ HiSax_getrev(const char *revision))
        return rev;
 }
 
-HISAX_INITFUNC(void
-HiSaxVersion(void))
+void __init
+HiSaxVersion(void)
 {
        char tmp[64];
 
@@ -440,9 +435,7 @@ HiSax_mod_inc_use_count(void)
        MOD_INC_USE_COUNT;
 }
 
-#ifdef MODULE
-#define HiSax_init init_module
-#else
+#ifndef MODULE
 #define MAX_ARG        (HISAX_MAX_CARDS*5)
 static int __init
 HiSax_setup(char *line)
@@ -863,7 +856,8 @@ closecard(int cardnr)
        ll_unload(csta);
 }
 
-HISAX_INITFUNC(static int init_card(struct IsdnCardState *cs))
+static int __devinit
+init_card(struct IsdnCardState *cs)
 {
        int irq_cnt, cnt = 3;
        long flags;
@@ -910,8 +904,8 @@ HISAX_INITFUNC(static int init_card(struct IsdnCardState *cs))
        return(3);
 }
 
-HISAX_INITFUNC(static int
-checkcard(int cardnr, char *id, int *busy_flag))
+static int __devinit
+checkcard(int cardnr, char *id, int *busy_flag)
 {
        long flags;
        int ret = 0;
@@ -973,6 +967,7 @@ checkcard(int cardnr, char *id, int *busy_flag))
                cs->iif.features =
                        ISDN_FEATURE_L2_X75I |
                        ISDN_FEATURE_L2_HDLC |
+                       ISDN_FEATURE_L2_HDLC_56K |
                        ISDN_FEATURE_L2_TRANS |
                        ISDN_FEATURE_L3_TRANS |
 #ifdef CONFIG_HISAX_1TR6
@@ -1208,8 +1203,8 @@ checkcard(int cardnr, char *id, int *busy_flag))
        return (1);
 }
 
-HISAX_INITFUNC(void
-HiSax_shiftcards(int idx))
+void __devinit
+HiSax_shiftcards(int idx)
 {
        int i;
 
@@ -1217,8 +1212,8 @@ HiSax_shiftcards(int idx))
                memcpy(&cards[i], &cards[i + 1], sizeof(cards[i]));
 }
 
-HISAX_INITFUNC(int
-HiSax_inithardware(int *busy_flag))
+int __devinit
+HiSax_inithardware(int *busy_flag)
 {
        int foundcards = 0;
        int i = 0;
@@ -1332,20 +1327,26 @@ HiSax_reportcard(int cardnr, int sel)
 }
 
 
-__initfunc(int
-HiSax_init(void))
+#ifdef MODULE
+#define HiSax_init init_module
+#endif
+
+int __init
+HiSax_init(void)
 {
        int i,j;
+       int nzproto = 0;
+
+       HiSaxVersion();
+       CallcNew();
+       Isdnl3New();
+       Isdnl2New();
+       TeiNew();
+       Isdnl1New();
 
 #ifdef MODULE
-       int nzproto = 0;
        if (!type[0]) {
                /* We 'll register drivers later, but init basic functions*/
-               CallcNew();
-               Isdnl3New();
-               Isdnl2New();
-               TeiNew();
-               Isdnl1New();
                return 0;
        }
 #ifdef CONFIG_HISAX_ELSA
@@ -1366,9 +1367,14 @@ HiSax_init(void))
                return 0;
        }
 #endif
+#ifdef CONFIG_HISAX_HFC_SX
+       if (type[0] == ISDN_CTYPE_HFC_SP_PCMCIA) {
+               /* we have to export  and return in this case */
+               return 0;
+       }
+#endif
 #endif
        nrcards = 0;
-       HiSaxVersion();
 #ifdef MODULE
        if (id)                 /* If id= string used */
                HiSax_id = id;
@@ -1430,6 +1436,7 @@ HiSax_init(void))
                        case ISDN_CTYPE_HSTSAPHIR:
                        case ISDN_CTYPE_GAZEL:
                        case ISDN_CTYPE_HFC_SX:
+                       case ISDN_CTYPE_HFC_SP_PCMCIA:
                                cards[j].para[0] = irq[i];
                                cards[j].para[1] = io[i];
                                break;
@@ -1469,7 +1476,6 @@ HiSax_init(void))
        }
        if (!nzproto) {
                printk(KERN_WARNING "HiSax: Warning - no protocol specified\n");
-               printk(KERN_WARNING "HiSax: Note! module load syntax has changed.\n");
                printk(KERN_WARNING "HiSax: using protocol %s\n", DEFAULT_PROTO_NAME);
        }
 #endif
@@ -1483,15 +1489,8 @@ HiSax_init(void))
        printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
               nrcards, (nrcards > 1) ? "s" : "");
 
-       CallcNew();
-       Isdnl3New();
-       Isdnl2New();
-       TeiNew();
-       Isdnl1New();
        if (HiSax_inithardware(NULL)) {
                /* Install only, if at least one card found */
-#ifdef MODULE
-#endif /* MODULE */
                return (0);
        } else {
                Isdnl1Free();
@@ -1527,12 +1526,51 @@ cleanup_module(void)
 #ifdef CONFIG_HISAX_ELSA
 int elsa_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
 {
+#ifdef MODULE
+       int i;
+
+       nrcards = 0;
+       /* Initialize all structs, even though we only accept
+          two pcmcia cards
+          */
+       for (i = 0; i < HISAX_MAX_CARDS; i++) {
+               cards[i].para[0] = irq[i];
+               cards[i].para[1] = io[i];
+               cards[i].typ = type[i];
+               if (protocol[i]) {
+                       cards[i].protocol = protocol[i];
+               }
+       }
+       cards[0].para[0] = pcm_irq;
+       cards[0].para[1] = (int)pcm_iob;
+       cards[0].protocol = prot;
+       cards[0].typ = ISDN_CTYPE_ELSA_PCMCIA;
+
+       if (!HiSax_id)
+               HiSax_id = HiSaxID;
+       if (!HiSaxID[0])
+               strcpy(HiSaxID, "HiSax");
+       for (i = 0; i < HISAX_MAX_CARDS; i++)
+               if (cards[i].typ > 0)
+                       nrcards++;
+       printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
+              nrcards, (nrcards > 1) ? "s" : "");
+
+       HiSax_inithardware(busy_flag);
+       printk(KERN_NOTICE "HiSax: module installed\n");
+#endif
+       return (0);
+}
+#endif
+
+#ifdef CONFIG_HISAX_HFC_SX
+int hfc_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
+{
 #ifdef MODULE
        int i;
        int nzproto = 0;
 
        nrcards = 0;
-       HiSaxVersion();
        /* Initialize all structs, even though we only accept
           two pcmcia cards
           */
@@ -1548,7 +1586,7 @@ int elsa_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        cards[0].para[0] = pcm_irq;
        cards[0].para[1] = (int)pcm_iob;
        cards[0].protocol = prot;
-       cards[0].typ = 10;
+       cards[0].typ = ISDN_CTYPE_HFC_SP_PCMCIA;
        nzproto = 1;
 
        if (!HiSax_id)
@@ -1561,11 +1599,6 @@ int elsa_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
               nrcards, (nrcards > 1) ? "s" : "");
 
-       Isdnl1New();
-       CallcNew();
-       Isdnl3New();
-       Isdnl2New();
-       TeiNew();
        HiSax_inithardware(busy_flag);
        printk(KERN_NOTICE "HiSax: module installed\n");
 #endif
@@ -1581,7 +1614,6 @@ int sedl_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        int nzproto = 0;
 
        nrcards = 0;
-       HiSaxVersion();
        /* Initialize all structs, even though we only accept
           two pcmcia cards
           */
@@ -1610,11 +1642,6 @@ int sedl_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
               nrcards, (nrcards > 1) ? "s" : "");
 
-       CallcNew();
-       Isdnl3New();
-       Isdnl2New();
-       Isdnl1New();
-       TeiNew();
        HiSax_inithardware(busy_flag);
        printk(KERN_NOTICE "HiSax: module installed\n");
 #endif
@@ -1630,7 +1657,6 @@ int avm_a1_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        int nzproto = 0;
 
        nrcards = 0;
-       HiSaxVersion();
        /* Initialize all structs, even though we only accept
           two pcmcia cards
           */
@@ -1659,11 +1685,6 @@ int avm_a1_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
        printk(KERN_DEBUG "HiSax: Total %d card%s defined\n",
               nrcards, (nrcards > 1) ? "s" : "");
 
-       Isdnl1New();
-       CallcNew();
-       Isdnl3New();
-       Isdnl2New();
-       TeiNew();
        HiSax_inithardware(busy_flag);
        printk(KERN_NOTICE "HiSax: module installed\n");
 #endif
@@ -1671,7 +1692,7 @@ int avm_a1_init_pcmcia(void *pcm_iob, int pcm_irq, int *busy_flag, int prot)
 }
 #endif
 
-int hisax_init_pcmcia(void *pcm_iob, int *busy_flag, struct IsdnCard *card)
+int __devinit hisax_init_pcmcia(void *pcm_iob, int *busy_flag, struct IsdnCard *card)
 {
        u_char ids[16];
        int ret = -1;
index f39dd755865ecc96e4efdf231c359d823e6fc2c6..da9ea63ba830c9384592e4e30c0e3d0c7454398f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: diva.c,v 1.21 2000/06/26 08:59:12 keil Exp $
+/* $Id: diva.c,v 1.25 2000/11/24 17:05:37 kai Exp $
  *
  * diva.c     low level stuff for Eicon.Diehl Diva Family ISDN cards
  *
@@ -13,6 +13,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include <linux/config.h>
 #include "hisax.h"
 #include "isac.h"
@@ -23,7 +24,7 @@
 
 extern const char *CardType[];
 
-const char *Diva_revision = "$Revision: 1.21 $";
+const char *Diva_revision = "$Revision: 1.25 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -833,12 +834,12 @@ Diva_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_diva __initdata = NULL;
-static         struct pci_dev *dev_diva_u __initdata = NULL;
-static         struct pci_dev *dev_diva201 __initdata = NULL;
+static         struct pci_dev *dev_diva __initdata;
+static         struct pci_dev *dev_diva_u __initdata;
+static         struct pci_dev *dev_diva201 __initdata;
 
-__initfunc(int
-setup_diva(struct IsdnCard *card))
+int __init
+setup_diva(struct IsdnCard *card)
 {
        int bytecnt;
        u_char val;
index f2357cc4b6219e90e4ae1adbb81d6292196116b5..b5b3b5b6821cf7083240bd6151e9b8d8748efb04 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: elsa.c,v 2.23 2000/06/26 08:59:12 keil Exp $
+/* $Id: elsa.c,v 2.26 2000/11/24 17:05:37 kai Exp $
  *
  * elsa.c     low level stuff for Elsa isdn cards
  *
@@ -16,6 +16,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include <linux/config.h>
 #include "hisax.h"
 #include "arcofi.h"
@@ -29,7 +30,7 @@
 
 extern const char *CardType[];
 
-const char *Elsa_revision = "$Revision: 2.23 $";
+const char *Elsa_revision = "$Revision: 2.26 $";
 const char *Elsa_Types[] =
 {"None", "PC", "PCC-8", "PCC-16", "PCF", "PCF-Pro",
  "PCMCIA", "QS 1000", "QS 3000", "Microlink PCI", "QS 3000 PCI", 
@@ -865,10 +866,10 @@ probe_elsa(struct IsdnCardState *cs)
        return (CARD_portlist[i]);
 }
 
-static         struct pci_dev *dev_qs1000 __initdata = NULL;
-static         struct pci_dev *dev_qs3000 __initdata = NULL;
+static         struct pci_dev *dev_qs1000 __devinitdata = NULL;
+static         struct pci_dev *dev_qs3000 __devinitdata = NULL;
 
-int
+int __devinit
 setup_elsa(struct IsdnCard *card)
 {
        long flags;
index 7f439e1a274beb9e4acd9c791eaf291a0ded7b37..74bedf8f6f1488813017a5594bdfffafcca8135f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: elsa_ser.c,v 2.9 2000/06/26 08:59:12 keil Exp $
+/* $Id: elsa_ser.c,v 2.10 2000/11/19 17:02:47 kai Exp $
  *
  * stuff for the serial modem on ELSA cards
  *
index a483b5824f1716f3fdd7c60355966b4cf5724ae0..28a7592309acb2393086bd872cde99a8ce8bb1b9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: fsm.c,v 1.13 2000/06/26 08:59:12 keil Exp $
+/* $Id: fsm.c,v 1.14 2000/11/24 17:05:37 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 
 #define FSM_TIMER_DEBUG 0
 
-HISAX_INITFUNC(void
-FsmNew(struct Fsm *fsm,
-       struct FsmNode *fnlist, int fncount))
+void __init
+FsmNew(struct Fsm *fsm, struct FsmNode *fnlist, int fncount)
 {
        int i;
 
index eb777b184087add464c24ba69bbceb17a2bc63e2..3b9287fab065ad9e10a090083353cb5f9485a9b4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: gazel.c,v 2.8 2000/06/26 08:59:12 keil Exp $
+/* $Id: gazel.c,v 2.11 2000/11/24 17:05:37 kai Exp $
  *
  * gazel.c     low level stuff for Gazel isdn cards
  *
@@ -9,6 +9,7 @@
  *
  */
 #include <linux/config.h>
+#include <linux/init.h>
 #define __NO_VERSION__
 #include "hisax.h"
 #include "isac.h"
@@ -18,7 +19,7 @@
 #include <linux/pci.h>
 
 extern const char *CardType[];
-const char *gazel_revision = "$Revision: 2.8 $";
+const char *gazel_revision = "$Revision: 2.11 $";
 
 #define R647      1
 #define R685      2
@@ -557,7 +558,7 @@ setup_gazelisa(struct IsdnCard *card, struct IsdnCardState *cs)
        return (0);
 }
 
-static struct pci_dev *dev_tel __initdata = NULL;
+static struct pci_dev *dev_tel __initdata;
 
 static int
 setup_gazelpci(struct IsdnCardState *cs)
@@ -645,8 +646,8 @@ setup_gazelpci(struct IsdnCardState *cs)
        return (0);
 }
 
-__initfunc(int
-          setup_gazel(struct IsdnCard *card))
+int __init
+setup_gazel(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 9e03c111e24e703728223f1020e6286966997f75..73c6fb448bd42c67ba37d0fe87867266d88fa515 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hfc_2bds0.c,v 1.13 2000/06/26 08:59:12 keil Exp $
+/* $Id: hfc_2bds0.c,v 1.15 2000/11/24 17:05:37 kai Exp $
  *
  *  specific routines for CCD's HFC 2BDS0
  *
@@ -8,6 +8,7 @@
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hfc_2bds0.h"
 #include "isdnl1.h"
@@ -1104,8 +1105,8 @@ hfc_dbusy_timer(struct IsdnCardState *cs)
 {
 }
 
-__initfunc(unsigned int
-*init_send_hfcd(int cnt))
+unsigned int __init
+*init_send_hfcd(int cnt)
 {
        int i, *send;
 
@@ -1119,8 +1120,8 @@ __initfunc(unsigned int
        return(send);
 }
 
-__initfunc(void
-init2bds0(struct IsdnCardState *cs))
+void __init
+init2bds0(struct IsdnCardState *cs)
 {
        cs->setstack_d = setstack_hfcd;
        cs->dbusytimer.function = (void *) hfc_dbusy_timer;
index bd14420467811c1b02a684d5a38ef345d4989d7f..22e94c074f9fbf25948e9c79004377b036b45b04 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hfc_2bs0.c,v 1.15 2000/07/26 20:46:47 keil Exp $
+/* $Id: hfc_2bs0.c,v 1.17 2000/11/24 17:05:37 kai Exp $
  *
  *  specific routines for CCD's HFC 2BS0
  *
@@ -9,6 +9,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hfc_2bs0.h"
 #include "isac.h"
@@ -570,8 +571,8 @@ setstack_hfc(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
-__initfunc(void
-init_send(struct BCState *bcs))
+void __init
+init_send(struct BCState *bcs)
 {
        int i;
 
@@ -584,8 +585,8 @@ init_send(struct BCState *bcs))
                bcs->hw.hfc.send[i] = 0x1fff;
 }
 
-__initfunc(void
-inithfc(struct IsdnCardState *cs))
+void __init
+inithfc(struct IsdnCardState *cs)
 {
        init_send(&cs->bcs[0]);
        init_send(&cs->bcs[1]);
index ac0392251581c75f2935a78d384d20a73e7af5ef..0a709fadec24fefb89ce1e3644946eaa501ea492 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hfc_pci.c,v 1.31 2000/08/20 07:32:55 keil Exp $
+/* $Id: hfc_pci.c,v 1.34 2000/11/24 17:05:37 kai Exp $
 
  * hfc_pci.c     low level driver for CCD´s hfc-pci based cards
  *
@@ -24,6 +24,7 @@
  *
  */
 
+#include <linux/init.h>
 #include <linux/config.h>
 #define __NO_VERSION__
 #include "hisax.h"
 #include "isdnl1.h"
 #include <linux/pci.h>
 #include <linux/interrupt.h>
-#include <linux/init.h>
 
 extern const char *CardType[];
 
-static const char *hfcpci_revision = "$Revision: 1.31 $";
+static const char *hfcpci_revision = "$Revision: 1.34 $";
 
 /* table entry in the PCI devices list */
 typedef struct {
@@ -1571,8 +1571,8 @@ hfcpci_bh(struct IsdnCardState *cs)
 /********************************/
 /* called for card init message */
 /********************************/
-__initfunc(void
-          inithfcpci(struct IsdnCardState *cs))
+void __init
+inithfcpci(struct IsdnCardState *cs)
 {
        cs->setstack_d = setstack_hfcpci;
        cs->dbusytimer.function = (void *) hfcpci_dbusy_timer;
index 36c26cb36423e7e45e2ef5aa2ec610c0435e12f6..c19f27df7e8cbaa7d29143bc88f4d12955c7004c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hfc_sx.c,v 1.6 2000/06/26 08:59:13 keil Exp $
+/* $Id: hfc_sx.c,v 1.9 2000/11/24 17:05:37 kai Exp $
 
  * hfc_sx.c     low level driver for CCD´s hfc-s+/sp based cards
  *
@@ -24,6 +24,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hfc_sx.h"
 #include "isdnl1.h"
@@ -31,7 +32,7 @@
 
 extern const char *CardType[];
 
-static const char *hfcsx_revision = "$Revision: 1.6 $";
+static const char *hfcsx_revision = "$Revision: 1.9 $";
 
 /***************************************/
 /* IRQ-table for CCDs demo board       */
@@ -1415,8 +1416,8 @@ hfcsx_bh(struct IsdnCardState *cs)
 /********************************/
 /* called for card init message */
 /********************************/
-__initfunc(void
-          inithfcsx(struct IsdnCardState *cs))
+void __devinit
+inithfcsx(struct IsdnCardState *cs)
 {
        cs->setstack_d = setstack_hfcsx;
        cs->dbusytimer.function = (void *) hfcsx_dbusy_timer;
@@ -1472,8 +1473,8 @@ hfcsx_card_msg(struct IsdnCardState *cs, int mt, void *arg)
 
 
 
-__initfunc(int
-          setup_hfcsx(struct IsdnCard *card))
+int __devinit
+setup_hfcsx(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
@@ -1486,7 +1487,8 @@ __initfunc(int
        cs->hw.hfcsx.int_s1 = 0;
        cs->dc.hfcsx.ph_state = 0;
        cs->hw.hfcsx.fifo = 255;
-       if (cs->typ == ISDN_CTYPE_HFC_SX) {
+       if ((cs->typ == ISDN_CTYPE_HFC_SX) ||
+           (cs->typ == ISDN_CTYPE_HFC_SP_PCMCIA)) {
                if ((!cs->hw.hfcsx.base) || 
                    check_region((cs->hw.hfcsx.base), 2)) {
                  printk(KERN_WARNING
index 18993bf0d89e3a6d2fd82797b2454764174f6c97..6c06186ae74a296aa05560a0a3f1249e52f35d34 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hfcscard.c,v 1.7 2000/06/26 08:59:13 keil Exp $
+/* $Id: hfcscard.c,v 1.8 2000/11/24 17:05:37 kai Exp $
  *
  * hfcscard.c     low level stuff for hfcs based cards (Teles3c, ACER P10)
  *
@@ -9,13 +9,14 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hfc_2bds0.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
 
-static const char *hfcs_revision = "$Revision: 1.7 $";
+static const char *hfcs_revision = "$Revision: 1.8 $";
 
 static void
 hfcs_interrupt(int intno, void *dev_id, struct pt_regs *regs)
@@ -136,8 +137,8 @@ hfcs_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_hfcs(struct IsdnCard *card))
+int __init
+setup_hfcs(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index abc215f87a0c82e3af27c158bf9d37d9dd7435f2..97211bc4cf331bf25942e3fdf3c9d85adabb75a1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hisax.h,v 2.48 2000/07/04 10:24:32 keil Exp $
+/* $Id: hisax.h,v 2.52 2000/11/25 17:01:00 kai Exp $
  *
  *   Basic declarations, defines and prototypes
  *
@@ -476,6 +476,7 @@ struct amd7930_hw {
 #define L1_MODE_TRANS  1
 #define L1_MODE_HDLC   2
 #define L1_MODE_EXTRN  3
+#define L1_MODE_HDLC_56K 4
 #define L1_MODE_MODEM  7
 #define L1_MODE_V32    8
 #define L1_MODE_FAX    9
@@ -987,24 +988,14 @@ struct IsdnCardState {
 #define  ISDN_CTYPE_W6692      36
 #define  ISDN_CTYPE_HFC_SX      37
 #define  ISDN_CTYPE_NETJET_U   38
-#define  ISDN_CTYPE_COUNT      38
+#define  ISDN_CTYPE_HFC_SP_PCMCIA      39
+#define  ISDN_CTYPE_COUNT      39
 
 
 #ifdef ISDN_CHIP_ISAC
 #undef ISDN_CHIP_ISAC
 #endif
 
-#ifndef __initfunc
-#define __initfunc(__arginit) __arginit
-#endif
-
-#ifndef __initdata
-#define __initdata
-#endif
-
-#define HISAX_INITFUNC(__arginit) __initfunc(__arginit)
-#define HISAX_INITDATA __initdata
-
 #ifdef CONFIG_HISAX_16_0
 #define  CARD_TELES0 1
 #ifndef ISDN_CHIP_ISAC
@@ -1064,10 +1055,6 @@ struct IsdnCardState {
 #ifndef ISDN_CHIP_ISAC
 #define ISDN_CHIP_ISAC 1
 #endif
-#undef HISAX_INITFUNC
-#define HISAX_INITFUNC(__arginit) __arginit
-#undef HISAX_INITDATA
-#define HISAX_INITDATA
 #else
 #define  CARD_ELSA  0
 #endif
index 6cae36eef8204094a052334c48eb40c8c895ed28..d8338bc26d8d0d538d6d58f3658a1ebf50cefa1c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hscx.c,v 1.19 2000/06/26 08:59:13 keil Exp $
+/* $Id: hscx.c,v 1.21 2000/11/24 17:05:37 kai Exp $
  *
  * hscx.c   HSCX specific routines
  *
@@ -9,18 +9,19 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hscx.h"
 #include "isac.h"
 #include "isdnl1.h"
 #include <linux/interrupt.h>
 
-static char *HSCXVer[] HISAX_INITDATA =
+static char *HSCXVer[] __initdata =
 {"A1", "?1", "A2", "?3", "A3", "V2.1", "?6", "?7",
  "?8", "?9", "?10", "?11", "?12", "?13", "?14", "???"};
 
-HISAX_INITFUNC(int
-HscxVersion(struct IsdnCardState *cs, char *s))
+int __init
+HscxVersion(struct IsdnCardState *cs, char *s)
 {
        int verA, verB;
 
@@ -218,8 +219,8 @@ setstack_hscx(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
-HISAX_INITFUNC(void
-clear_pending_hscx_ints(struct IsdnCardState *cs))
+void __init
+clear_pending_hscx_ints(struct IsdnCardState *cs)
 {
        int val, eval;
 
@@ -244,8 +245,8 @@ clear_pending_hscx_ints(struct IsdnCardState *cs))
        cs->BC_Write_Reg(cs, 1, HSCX_MASK, 0xFF);
 }
 
-HISAX_INITFUNC(void
-inithscx(struct IsdnCardState *cs))
+void __init
+inithscx(struct IsdnCardState *cs)
 {
        cs->bcs[0].BC_SetStack = setstack_hscx;
        cs->bcs[1].BC_SetStack = setstack_hscx;
@@ -261,8 +262,8 @@ inithscx(struct IsdnCardState *cs))
        modehscx(cs->bcs + 1, 0, 0);
 }
 
-HISAX_INITFUNC(void
-inithscxisac(struct IsdnCardState *cs, int part))
+void __init
+inithscxisac(struct IsdnCardState *cs, int part)
 {
        if (part & 1) {
                clear_pending_isac_ints(cs);
index 581cf92138346aa30d896b82d4765b1e4f8222a3..c28f070e2e082ff96a35a182c1c103f0ed52a5a7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hscx_irq.c,v 1.15 2000/06/26 08:59:13 keil Exp $
+/* $Id: hscx_irq.c,v 1.16 2000/11/19 17:02:47 kai Exp $
  *
  * hscx_irq.c     low level b-channel stuff for Siemens HSCX
  *
index 5f2740e9e87045a7b75454dd3b0b5536753fbd9d..fb449592af0b8ab804608746bd7e2e5ca5dc06d4 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: icc.c,v 1.3 2000/08/20 07:34:04 keil Exp $
+// $Id: icc.c,v 1.5 2000/11/24 17:05:37 kai Exp $
 //-----------------------------------------------------------------------------
 //
 // ICC specific routines
@@ -15,6 +15,7 @@
 //-----------------------------------------------------------------------------
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "icc.h"
 // #include "arcofi.h"
@@ -24,7 +25,7 @@
 #define DBUSY_TIMER_VALUE 80
 #define ARCOFI_USE 0
 
-static char *ICCVer[] HISAX_INITDATA =
+static char *ICCVer[] __initdata =
 {"2070 A1/A3", "2070 B1", "2070 B2/B3", "2070 V2.4"};
 
 void
@@ -622,8 +623,8 @@ dbusy_timer_handler(struct IsdnCardState *cs)
        }
 }
 
-HISAX_INITFUNC(void
-initicc(struct IsdnCardState *cs))
+void __init
+initicc(struct IsdnCardState *cs)
 {
        cs->tqueue.routine = (void *) (void *) icc_bh;
        cs->setstack_d = setstack_icc;
@@ -659,8 +660,8 @@ initicc(struct IsdnCardState *cs))
        ph_command(cs, ICC_CMD_DI);
 }
 
-HISAX_INITFUNC(void
-clear_pending_icc_ints(struct IsdnCardState *cs))
+void __init
+clear_pending_icc_ints(struct IsdnCardState *cs)
 {
        int val, eval;
 
index 363408ab0d3fd749c605c1fd9f87962666893e8a..ae68aea1b8b211cbd50bbe7d9f7ac33e9a6ba44d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isac.c,v 1.26 2000/06/26 08:59:13 keil Exp $
+/* $Id: isac.c,v 1.28 2000/11/24 17:05:37 kai Exp $
  *
  * isac.c   ISAC specific routines
  *
 #include "arcofi.h"
 #include "isdnl1.h"
 #include <linux/interrupt.h>
+#include <linux/init.h>
 
 #define DBUSY_TIMER_VALUE 80
 #define ARCOFI_USE 1
 
-static char *ISACVer[] HISAX_INITDATA =
+static char *ISACVer[] __devinitdata =
 {"2086/2186 V1.1", "2085 B1", "2085 B2",
  "2085 V2.3"};
 
@@ -620,8 +621,8 @@ dbusy_timer_handler(struct IsdnCardState *cs)
        }
 }
 
-HISAX_INITFUNC(void
-initisac(struct IsdnCardState *cs))
+void __devinit
+initisac(struct IsdnCardState *cs)
 {
        cs->tqueue.routine = (void *) (void *) isac_bh;
        cs->setstack_d = setstack_isac;
@@ -656,8 +657,8 @@ initisac(struct IsdnCardState *cs))
        cs->writeisac(cs, ISAC_MASK, 0x0);
 }
 
-HISAX_INITFUNC(void
-clear_pending_isac_ints(struct IsdnCardState *cs))
+void __devinit
+clear_pending_isac_ints(struct IsdnCardState *cs)
 {
        int val, eval;
 
index d91f86f0294a18b170c1311f1af4cbedd89439fa..27987e2c1eb0b40677730bd1013be619d299d753 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isar.c,v 1.15 2000/06/26 08:59:13 keil Exp $
+/* $Id: isar.c,v 1.17 2000/11/24 17:05:37 kai Exp $
  *
  * isar.c   ISAR (Siemens PSB 7110) specific routines
  *
@@ -9,6 +9,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isar.h"
 #include "isdnl1.h"
@@ -1782,8 +1783,8 @@ isar_auxcmd(struct IsdnCardState *cs, isdn_ctrl *ic) {
        return(0);
 }
 
-HISAX_INITFUNC(void 
-initisar(struct IsdnCardState *cs))
+void __devinit
+initisar(struct IsdnCardState *cs)
 {
        cs->bcs[0].BC_SetStack = setstack_isar;
        cs->bcs[1].BC_SetStack = setstack_isar;
index f523f378dcf894e64f38e3e339ef64f01de88faa..a651035a67e088110750a19ca3ae04f1227b3fba 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdnl1.c,v 2.39 2000/06/26 08:59:13 keil Exp $
+/* $Id: isdnl1.c,v 2.41 2000/11/24 17:05:37 kai Exp $
  *
  * isdnl1.c     common low level stuff for Siemens Chipsetbased isdn cards
  *              based on the teles driver from Jan den Ouden
  *
  */
 
-const char *l1_revision = "$Revision: 2.39 $";
+const char *l1_revision = "$Revision: 2.41 $";
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isdnl1.h"
 
 #define TIMER3_VALUE 7000
 
-static
-struct Fsm l1fsm_b =
-{NULL, 0, 0, NULL, NULL};
-
-static
-struct Fsm l1fsm_s =
-{NULL, 0, 0, NULL, NULL};
+static struct Fsm l1fsm_b;
+static struct Fsm l1fsm_s;
 
 enum {
        ST_L1_F2,
@@ -584,7 +580,7 @@ l1_activate_no(struct FsmInst *fi, int event, void *arg)
        }
 }
 
-static struct FsmNode L1SFnList[] HISAX_INITDATA =
+static struct FsmNode L1SFnList[] __initdata =
 {
        {ST_L1_F3, EV_PH_ACTIVATE, l1_activate_s},
        {ST_L1_F6, EV_PH_ACTIVATE, l1_activate_no},
@@ -669,7 +665,7 @@ l1_activate_u(struct FsmInst *fi, int event, void *arg)
        st->l1.l1hw(st, HW_INFO1 | REQUEST, NULL);
 }
 
-static struct FsmNode L1UFnList[] HISAX_INITDATA =
+static struct FsmNode L1UFnList[] __initdata =
 {
        {ST_L1_RESET, EV_DEACT_IND, l1_deact_req_u},
        {ST_L1_DEACT, EV_DEACT_IND, l1_deact_req_u},
@@ -731,7 +727,7 @@ l1b_timer_deact(struct FsmInst *fi, int event, void *arg)
        st->l2.l2l1(st, PH_DEACTIVATE | CONFIRM, NULL);
 }
 
-static struct FsmNode L1BFnList[] HISAX_INITDATA =
+static struct FsmNode L1BFnList[] __initdata =
 {
        {ST_L1_NULL, EV_PH_ACTIVATE, l1b_activate},
        {ST_L1_WAIT_ACT, EV_TIMER_ACT, l1b_timer_act},
@@ -741,7 +737,8 @@ static struct FsmNode L1BFnList[] HISAX_INITDATA =
 
 #define L1B_FN_COUNT (sizeof(L1BFnList)/sizeof(struct FsmNode))
 
-HISAX_INITFUNC(void Isdnl1New(void))
+void __init
+Isdnl1New(void)
 {
 #ifdef HISAX_UINTERFACE
        l1fsm_u.state_count = L1U_STATE_COUNT;
index c20d0d21fe0287a0fb912b3e4ff3d665b63788dd..59d461c0b16c85c0404cce1a49720453a0504c9b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdnl2.c,v 2.23 2000/06/26 08:59:13 keil Exp $
+/* $Id: isdnl2.c,v 2.25 2000/11/24 17:05:38 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isdnl2.h"
 
-const char *l2_revision = "$Revision: 2.23 $";
+const char *l2_revision = "$Revision: 2.25 $";
 
 static void l2m_debug(struct FsmInst *fi, char *fmt, ...);
 
-static
-struct Fsm l2fsm =
-{NULL, 0, 0, NULL, NULL};
+static struct Fsm l2fsm;
 
 enum {
        ST_L2_1,
@@ -1535,7 +1534,7 @@ l2_frame_error_reest(struct FsmInst *fi, int event, void *arg)
        test_and_clear_bit(FLG_L3_INIT, &st->l2.flag);
 }
 
-static struct FsmNode L2FnList[] HISAX_INITDATA =
+static struct FsmNode L2FnList[] __initdata =
 {
        {ST_L2_1, EV_L2_DL_ESTABLISH_REQ, l2_mdl_assign},
        {ST_L2_2, EV_L2_DL_ESTABLISH_REQ, l2_go_st3},
@@ -1832,8 +1831,8 @@ releasestack_transl2(struct PStack *st)
 {
 }
 
-HISAX_INITFUNC(void
-Isdnl2New(void))
+void __init
+Isdnl2New(void)
 {
        l2fsm.state_count = L2_STATE_COUNT;
        l2fsm.event_count = L2_EVENT_COUNT;
index b4e4736705168c3173cba411639993baa2c076f8..c5fa0a03bb5848f2fbd3369310efb5aa870a5648 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdnl3.c,v 2.14 2000/06/26 08:59:13 keil Exp $
+/* $Id: isdnl3.c,v 2.17 2000/11/24 17:05:38 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
  *              Fritz Elfert
  *
  */
+
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isdnl3.h"
 #include <linux/config.h>
 
-const char *l3_revision = "$Revision: 2.14 $";
+const char *l3_revision = "$Revision: 2.17 $";
 
-static
-struct Fsm l3fsm =
-{NULL, 0, 0, NULL, NULL};
+static struct Fsm l3fsm;
 
 enum {
        ST_L3_LC_REL,
@@ -303,7 +303,10 @@ release_l3_process(struct l3_process *p)
                                if (!skb_queue_len(&p->st->l3.squeue)) {
                                        if (p->debug)
                                                l3_debug(p->st, "release_l3_process: release link");
-                                       FsmEvent(&p->st->l3.l3m, EV_RELEASE_REQ, NULL);
+                                       if (p->st->protocol != ISDN_PTYPE_NI1)
+                                               FsmEvent(&p->st->l3.l3m, EV_RELEASE_REQ, NULL);
+                                       else
+                                               FsmEvent(&p->st->l3.l3m, EV_RELEASE_IND, NULL);
                                } else {
                                        if (p->debug)
                                                l3_debug(p->st, "release_l3_process: not release link");
@@ -521,7 +524,7 @@ lc_release_cnf(struct FsmInst *fi, int event, void *arg)
 
 
 /* *INDENT-OFF* */
-static struct FsmNode L3FnList[] HISAX_INITDATA =
+static struct FsmNode L3FnList[] __initdata =
 {
        {ST_L3_LC_REL,          EV_ESTABLISH_REQ,       lc_activate},
        {ST_L3_LC_REL,          EV_ESTABLISH_IND,       lc_connect},
@@ -530,7 +533,7 @@ static struct FsmNode L3FnList[] HISAX_INITDATA =
        {ST_L3_LC_ESTAB_WAIT,   EV_RELEASE_REQ,         lc_start_delay},
        {ST_L3_LC_ESTAB_WAIT,   EV_RELEASE_IND,         lc_release_ind},
        {ST_L3_LC_ESTAB,        EV_RELEASE_IND,         lc_release_ind},
-       {ST_L3_LC_ESTAB,        EV_RELEASE_REQ,         lc_start_delay},
+       {ST_L3_LC_ESTAB,        EV_RELEASE_REQ,         lc_start_delay_check},
         {ST_L3_LC_REL_DELAY,    EV_RELEASE_IND,         lc_release_ind},
         {ST_L3_LC_REL_DELAY,    EV_ESTABLISH_REQ,       lc_connected},
         {ST_L3_LC_REL_DELAY,    EV_TIMEOUT,             lc_release_req},
@@ -576,8 +579,8 @@ l3_msg(struct PStack *st, int pr, void *arg)
        }
 }
 
-HISAX_INITFUNC(void
-Isdnl3New(void))
+void __init
+Isdnl3New(void)
 {
        l3fsm.state_count = L3_STATE_COUNT;
        l3fsm.event_count = L3_EVENT_COUNT;
index bc08dafd8f2fdcf443760ac85476c723c3c2e6f4..e703ecf662ddae16296517eaa4f9f1c737a9713c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isurf.c,v 1.9 2000/06/26 08:59:13 keil Exp $
+/* $Id: isurf.c,v 1.10 2000/11/24 17:05:38 kai Exp $
  *
  * isurf.c  low level stuff for Siemens I-Surf/I-Talk cards
  *
@@ -9,6 +9,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "isar.h"
@@ -16,7 +17,7 @@
 
 extern const char *CardType[];
 
-static const char *ISurf_revision = "$Revision: 1.9 $";
+static const char *ISurf_revision = "$Revision: 1.10 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -190,8 +191,8 @@ isurf_auxcmd(struct IsdnCardState *cs, isdn_ctrl *ic) {
        return(isar_auxcmd(cs, ic));
 }
 
-__initfunc(int
-setup_isurf(struct IsdnCard *card))
+int __init
+setup_isurf(struct IsdnCard *card)
 {
        int ver;
        struct IsdnCardState *cs = card->cs;
index 01976b82fc1efe645f215558d05c1ea76906d0ce..11e5bd316cbb10f4bb33647ef313d7f3f63af4b1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ix1_micro.c,v 2.9 2000/06/26 08:59:13 keil Exp $
+/* $Id: ix1_micro.c,v 2.10 2000/11/24 17:05:38 kai Exp $
  *
  * ix1_micro.c  low level stuff for ITK ix1-micro Rev.2 isdn cards
  *              derived from the original file teles3.c from Karsten Keil
 
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-const char *ix1_revision = "$Revision: 2.9 $";
+const char *ix1_revision = "$Revision: 2.10 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -243,8 +244,8 @@ ix1_card_msg(struct IsdnCardState *cs, int mt, void *arg)
 }
 
 
-__initfunc(int
-setup_ix1micro(struct IsdnCard *card))
+int __init
+setup_ix1micro(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index b2586ebda13d7c8e75d167943d229a87493afac1..fc96b6e2e2128739b93baba85f232852706cce60 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: jade.c,v 1.4 2000/06/26 08:59:14 keil Exp $
+/* $Id: jade.c,v 1.6 2000/11/24 17:05:38 kai Exp $
  *
  * jade.c   JADE stuff (derived from original hscx.c)
  *
@@ -10,6 +10,7 @@
 
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "hscx.h"
 #include "jade.h"
@@ -17,8 +18,8 @@
 #include <linux/interrupt.h>
 
 
-HISAX_INITFUNC(int
-JadeVersion(struct IsdnCardState *cs, char *s))
+int __init
+JadeVersion(struct IsdnCardState *cs, char *s)
 {
     int ver,i;
     int to = 50;
@@ -262,8 +263,8 @@ setstack_jade(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
-HISAX_INITFUNC(void
-clear_pending_jade_ints(struct IsdnCardState *cs))
+void __init
+clear_pending_jade_ints(struct IsdnCardState *cs)
 {
        int val;
        char tmp[64];
@@ -288,8 +289,8 @@ clear_pending_jade_ints(struct IsdnCardState *cs))
        cs->BC_Write_Reg(cs, 1, jade_HDLC_IMR, 0xF8);
 }
 
-HISAX_INITFUNC(void
-initjade(struct IsdnCardState *cs))
+void __init
+initjade(struct IsdnCardState *cs)
 {
        cs->bcs[0].BC_SetStack = setstack_jade;
        cs->bcs[1].BC_SetStack = setstack_jade;
index beb10d20a41e7cd37539208f90efe91fac6e4423..d9d289886fc17ffb64fbdc1739d8f99a06481cb0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: jade_irq.c,v 1.4 2000/06/26 08:59:14 keil Exp $
+/* $Id: jade_irq.c,v 1.5 2000/11/19 17:02:48 kai Exp $
  *
  * jade_irq.c   Low level JADE IRQ stuff (derived from original hscx_irq.c)
  *
index 831d788b5a9d7b4e511f26f137976a26cd18c4a0..fcb34f415b1df89036735278b649f0c4b7e73651 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: l3_1tr6.c,v 2.12 2000/08/20 07:31:30 keil Exp $
+/* $Id: l3_1tr6.c,v 2.13 2000/11/19 17:02:48 kai Exp $
  *
  *  German 1TR6 D-channel protocol
  *
@@ -17,7 +17,7 @@
 #include <linux/ctype.h>
 
 extern char *HiSax_getrev(const char *revision);
-const char *l3_1tr6_revision = "$Revision: 2.12 $";
+const char *l3_1tr6_revision = "$Revision: 2.13 $";
 
 #define MsgHead(ptr, cref, mty, dis) \
        *ptr++ = dis; \
index 8778bf3a0eb436c0168ad2da0068f740cb10b8e6..cc714ce3dbc865a5b8afb7d94a9dee1c59092063 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: l3dss1.c,v 2.29 2000/06/26 08:59:14 keil Exp $
+/* $Id: l3dss1.c,v 2.30 2000/11/19 17:02:48 kai Exp $
  *
  * EURO/DSS1 D-channel protocol
  *
@@ -22,7 +22,7 @@
 #include <linux/config.h>
 
 extern char *HiSax_getrev(const char *revision);
-const char *dss1_revision = "$Revision: 2.29 $";
+const char *dss1_revision = "$Revision: 2.30 $";
 
 #define EXT_BEARER_CAPS 1
 
index ec28539a7503236c12d5c6d98cf923a09a5e980a..0bbe83ad23a58b1b4f6237e2ecbfb8e097aa6f0a 100644 (file)
@@ -442,6 +442,27 @@ l3ni1_message(struct l3_process *pc, u_char mt)
        l3_msg(pc->st, DL_DATA | REQUEST, skb);
 }
 
+static void
+l3ni1_message_plus_chid(struct l3_process *pc, u_char mt)
+/* sends an l3 messages plus channel id -  added GE 05/09/00 */
+{
+       struct sk_buff *skb;
+       u_char tmp[16];
+       u_char *p = tmp;
+       u_char chid;
+
+       chid = (u_char)(pc->para.bchannel & 0x03) | 0x88;
+       MsgHead(p, pc->callref, mt);
+       *p++ = IE_CHANNEL_ID;
+       *p++ = 0x01;
+       *p++ = chid;
+
+       if (!(skb = l3_alloc_skb(7)))
+               return;
+       memcpy(skb_put(skb, 7), tmp, 7);
+       l3_msg(pc->st, DL_DATA | REQUEST, skb);
+}
+
 static void
 l3ni1_message_cause(struct l3_process *pc, u_char mt, u_char cause)
 {
@@ -1175,9 +1196,9 @@ l3ni1_setup_req(struct l3_process *pc, u_char pr,
        case 1:                   /* Telephony                                */
                *p++ = IE_BEARER;
                *p++ = 0x3;       /* Length                                   */
-               *p++ = 0x90;      /* Coding Std. CCITT, 3.1 kHz audio         */
+               *p++ = 0x90;      /* 3.1khz Audio                             */
                *p++ = 0x90;      /* Circuit-Mode 64kbps                      */
-               *p++ = 0xa3;      /* A-Law Audio                              */
+               *p++ = 0xa2;      /* u-Law Audio                              */
                break;
        case 5:                   /* Datatransmission 64k, BTX                */
        case 7:                   /* Datatransmission 64k                     */
@@ -1240,7 +1261,7 @@ l3ni1_setup_req(struct l3_process *pc, u_char pr,
                        *p++ = 0x3;     /* Length                                   */
                        *p++ = 0x90;    /* Coding Std. CCITT, 3.1 kHz audio         */
                        *p++ = 0x90;    /* Circuit-Mode 64kbps                      */
-                       *p++ = 0xa3;    /* A-Law Audio                              */
+                       *p++ = 0xa2;    /* u-Law Audio                              */
                        break;
                case 5:                 /* Datatransmission 64k, BTX                */
                case 7:                 /* Datatransmission 64k                     */
@@ -1641,7 +1662,9 @@ l3ni1_setup_rsp(struct l3_process *pc, u_char pr,
            return;
          }
        newl3state(pc, 8);
-       l3ni1_message(pc, MT_CONNECT);
+       if (pc->debug & L3_DEB_WARN)
+               l3_debug(pc->st, "D-chan connect for waiting call");
+       l3ni1_message_plus_chid(pc, MT_CONNECT); /* GE 05/09/00 */
        L3DelTimer(&pc->timer);
        L3AddTimer(&pc->timer, T313, CC_T313);
 }
@@ -2544,6 +2567,7 @@ l3ni1_global_restart(struct l3_process *pc, u_char pr, void *arg)
                        up->st->lli.l4l3(up->st, CC_RESTART | REQUEST, up);
                else if (up->para.bchannel == chan)
                        up->st->lli.l4l3(up->st, CC_RESTART | REQUEST, up);
+
                up = up->next;
        }
        p = tmp;
index 24c919a1762b07efb805a9ae3bc969b3ae132aa6..9fd7ce86a1b4625f3ea2ff5d8b10111bd5ab80b3 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: l3ni1.h,v 2.2 2000/06/26 08:59:14 keil Exp $
+// $Id: l3ni1.h,v 2.3 2000/11/16 13:50:43 keil Exp $
 //-----------------------------------------------------------------------------
 //
 // NI1 D-channel protocol
@@ -11,6 +11,7 @@
 // driver written by Karsten Keil et al.  Thanks also for the 
 // code provided by Ragnar Paulson.
 //
+//
 // This file is (c) under GNU PUBLIC LICENSE
 //
 //-----------------------------------------------------------------------------
@@ -29,7 +30,7 @@
 #define T313   4000
 #define T318   4000
 #define T319   4000
-#define TSPID  2000
+#define TSPID  5000 /* was 2000 - Guy Ellis */
 
 /*
  * Message-Types
index db5d2ee46020173aa1ace406cd9257e51a29991b..abb544866d45b22d9a2d5f37bfa55a14df030106 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mic.c,v 1.9 2000/06/26 08:59:14 keil Exp $
+/* $Id: mic.c,v 1.10 2000/11/24 17:05:38 kai Exp $
  *
  * mic.c  low level stuff for mic cards
  *
@@ -11,6 +11,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
@@ -18,7 +19,7 @@
 
 extern const char *CardType[];
 
-const char *mic_revision = "$Revision: 1.9 $";
+const char *mic_revision = "$Revision: 1.10 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -198,8 +199,8 @@ mic_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_mic(struct IsdnCard *card))
+int __init
+setup_mic(struct IsdnCard *card)
 {
        int bytecnt;
        struct IsdnCardState *cs = card->cs;
index 6be8a493db72e44de207d667104a1eb7bfd378ba..c460ffa3cd6f801405f8e9dd8d2852389f68c01f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: netjet.c,v 1.20 2000/06/26 08:59:14 keil Exp $
+/* $Id: netjet.c,v 1.24 2000/11/24 17:05:38 kai Exp $
  *
  * netjet.c     low level stuff for Traverse Technologie NETJet ISDN cards
  *
@@ -11,6 +11,8 @@
  */
 
 #define __NO_VERSION__
+#include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
@@ -28,7 +30,7 @@
 #define virt_to_bus (u_int)
 #endif
 
-const char *NETjet_revision = "$Revision: 1.20 $";
+const char *NETjet_revision = "$Revision: 1.24 $";
 
 /* Interface functions */
 
@@ -176,7 +178,8 @@ mode_tiger(struct BCState *bcs, int mode, int bc)
                                cs->hw.njet.dmactrl = 1;
                                byteout(cs->hw.njet.base + NETJET_DMACTRL,
                                        cs->hw.njet.dmactrl);
-                               byteout(cs->hw.njet.base + NETJET_IRQMASK0, 0x3f);
+                               byteout(cs->hw.njet.base + NETJET_IRQMASK0, 0x0f);
+                       /* was 0x3f now 0x0f for TJ300 and TJ320  GE 13/07/00 */
                        }
                        bcs->hw.tiger.sendp = bcs->hw.tiger.send;
                        bcs->hw.tiger.free = NETJET_DMA_TXSIZE;
@@ -214,6 +217,8 @@ static void printframe(struct IsdnCardState *cs, u_char *buf, int count, char *s
        }
 }
 
+// macro for 64k
+
 #define MAKE_RAW_BYTE for (j=0; j<8; j++) { \
                        bitcnt++;\
                        s_val >>= 1;\
@@ -242,6 +247,7 @@ static void printframe(struct IsdnCardState *cs, u_char *buf, int count, char *s
                }
 
 static int make_raw_data(struct BCState *bcs) {
+// this make_raw is for 64k
        register u_int i,s_cnt=0;
        register u_char j;
        register u_char val;
@@ -297,6 +303,113 @@ static int make_raw_data(struct BCState *bcs) {
        return(0);
 }
 
+// macro for 56k
+
+#define MAKE_RAW_BYTE_56K for (j=0; j<8; j++) { \
+                       bitcnt++;\
+                       s_val >>= 1;\
+                       if (val & 1) {\
+                               s_one++;\
+                               s_val |= 0x80;\
+                       } else {\
+                               s_one = 0;\
+                               s_val &= 0x7f;\
+                       }\
+                       if (bitcnt==7) {\
+                               s_val >>= 1;\
+                               s_val |= 0x80;\
+                               bcs->hw.tiger.sendbuf[s_cnt++] = s_val;\
+                               bitcnt = 0;\
+                       }\
+                       if (s_one == 5) {\
+                               s_val >>= 1;\
+                               s_val &= 0x7f;\
+                               bitcnt++;\
+                               s_one = 0;\
+                       }\
+                       if (bitcnt==7) {\
+                               s_val >>= 1;\
+                               s_val |= 0x80;\
+                               bcs->hw.tiger.sendbuf[s_cnt++] = s_val;\
+                               bitcnt = 0;\
+                       }\
+                       val >>= 1;\
+               }
+
+static int make_raw_data_56k(struct BCState *bcs) {
+// this make_raw is for 56k
+       register u_int i,s_cnt=0;
+       register u_char j;
+       register u_char val;
+       register u_char s_one = 0;
+       register u_char s_val = 0;
+       register u_char bitcnt = 0;
+       u_int fcs;
+
+       if (!bcs->tx_skb) {
+               debugl1(bcs->cs, "tiger make_raw_56k: NULL skb");
+               return(1);
+       }
+       val = HDLC_FLAG_VALUE;
+       for (j=0; j<8; j++) {
+               bitcnt++;
+               s_val >>= 1;
+               if (val & 1)
+                       s_val |= 0x80;
+               else
+                       s_val &= 0x7f;
+               if (bitcnt==7) {
+                       s_val >>= 1;
+                       s_val |= 0x80;
+                       bcs->hw.tiger.sendbuf[s_cnt++] = s_val;
+                       bitcnt = 0;
+               }
+               val >>= 1;
+       };
+       fcs = PPP_INITFCS;
+       for (i=0; i<bcs->tx_skb->len; i++) {
+               val = bcs->tx_skb->data[i];
+               fcs = PPP_FCS (fcs, val);
+               MAKE_RAW_BYTE_56K;
+       }
+       fcs ^= 0xffff;
+       val = fcs & 0xff;
+       MAKE_RAW_BYTE_56K;
+       val = (fcs>>8) & 0xff;
+       MAKE_RAW_BYTE_56K;
+       val = HDLC_FLAG_VALUE;
+       for (j=0; j<8; j++) {
+               bitcnt++;
+               s_val >>= 1;
+               if (val & 1)
+                       s_val |= 0x80;
+               else
+                       s_val &= 0x7f;
+               if (bitcnt==7) {
+                       s_val >>= 1;
+                       s_val |= 0x80;
+                       bcs->hw.tiger.sendbuf[s_cnt++] = s_val;
+                       bitcnt = 0;
+               }
+               val >>= 1;
+       }
+       if (bcs->cs->debug & L1_DEB_HSCX)
+               debugl1(bcs->cs,"tiger make_raw_56k: in %ld out %d.%d",
+                       bcs->tx_skb->len, s_cnt, bitcnt);
+       if (bitcnt) {
+               while (8>bitcnt++) {
+                       s_val >>= 1;
+                       s_val |= 0x80;
+               }
+               bcs->hw.tiger.sendbuf[s_cnt++] = s_val;
+               bcs->hw.tiger.sendbuf[s_cnt++] = 0xff;  // NJ<->NJ thoughput bug fix
+       }
+       bcs->hw.tiger.sendcnt = s_cnt;
+       bcs->tx_cnt -= bcs->tx_skb->len;
+       bcs->hw.tiger.sp = bcs->hw.tiger.sendbuf;
+       return(0);
+}
+
 static void got_frame(struct BCState *bcs, int count) {
        struct sk_buff *skb;
                
@@ -505,9 +618,10 @@ void read_tiger(struct IsdnCardState *cs) {
                p = cs->bcs[0].hw.tiger.rec + NETJET_DMA_RXSIZE - 1;
        else
                p = cs->bcs[0].hw.tiger.rec + cnt - 1;
-       if (cs->bcs[0].mode == L1_MODE_HDLC)
+       if ((cs->bcs[0].mode == L1_MODE_HDLC) || (cs->bcs[0].mode == L1_MODE_HDLC_56K))
                read_raw(cs->bcs, p, cnt);
-       if (cs->bcs[1].mode == L1_MODE_HDLC)
+
+       if ((cs->bcs[1].mode == L1_MODE_HDLC) || (cs->bcs[1].mode == L1_MODE_HDLC_56K))
                read_raw(cs->bcs + 1, p, cnt);
        cs->hw.njet.irqstat0 &= ~NETJET_IRQM0_READ;
 }
@@ -682,9 +796,9 @@ void write_tiger(struct IsdnCardState *cs) {
                p = cs->bcs[0].hw.tiger.send + NETJET_DMA_TXSIZE - 1;
        else
                p = cs->bcs[0].hw.tiger.send + cnt - 1;
-       if (cs->bcs[0].mode == L1_MODE_HDLC)
+       if ((cs->bcs[0].mode == L1_MODE_HDLC) || (cs->bcs[0].mode == L1_MODE_HDLC_56K))
                write_raw(cs->bcs, p, cnt);
-       if (cs->bcs[1].mode == L1_MODE_HDLC)
+       if ((cs->bcs[1].mode == L1_MODE_HDLC) || (cs->bcs[1].mode == L1_MODE_HDLC_56K))
                write_raw(cs->bcs + 1, p, cnt);
        cs->hw.njet.irqstat0 &= ~NETJET_IRQM0_WRITE;
 }
@@ -807,8 +921,8 @@ setstack_tiger(struct PStack *st, struct BCState *bcs)
 }
 
  
-__initfunc(void
-inittiger(struct IsdnCardState *cs))
+void __init
+inittiger(struct IsdnCardState *cs)
 {
        if (!(cs->bcs[0].hw.tiger.send = kmalloc(NETJET_DMA_TXSIZE * sizeof(unsigned int),
                GFP_KERNEL | GFP_DMA))) {
index d7dede4ff6a2c7353b3ecd589468ce039adf9e8c..9d9c533855d8f21b00ab87c7544b5862f15b2180 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: netjet.h,v 2.3 2000/06/26 08:59:14 keil Exp $
+// $Id: netjet.h,v 2.5 2000/11/24 17:05:38 kai Exp $
 //-----------------------------------------------------------------------------
 //
 // NETjet common header file
@@ -72,6 +72,6 @@ void write_tiger(struct IsdnCardState *cs);
 
 void netjet_fill_dma(struct BCState *bcs);
 void netjet_interrupt(int intno, void *dev_id, struct pt_regs *regs);
-__initfunc(void inittiger(struct IsdnCardState *cs));
+void inittiger(struct IsdnCardState *cs);
 void release_io_netjet(struct IsdnCardState *cs);
 
index 4428483b3dc6414c52516b8027a1ad40cb42a05e..ca707ea12b8b5ccf6935c8401783dc86eea1b02c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: niccy.c,v 1.12 2000/06/26 08:59:14 keil Exp $
+/* $Id: niccy.c,v 1.15 2000/11/24 17:05:38 kai Exp $
  *
  * niccy.c  low level stuff for Dr. Neuhaus NICCY PnP and NICCY PCI and
  *          compatible (SAGEM cybermodem)
@@ -14,6 +14,7 @@
 
 #define __NO_VERSION__
 #include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
@@ -21,7 +22,7 @@
 #include <linux/pci.h>
 
 extern const char *CardType[];
-const char *niccy_revision = "$Revision: 1.12 $";
+const char *niccy_revision = "$Revision: 1.15 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -240,10 +241,10 @@ niccy_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *niccy_dev __initdata = NULL;
+static struct pci_dev *niccy_dev __initdata;
 
-__initfunc(int
-setup_niccy(struct IsdnCard *card))
+int __init
+setup_niccy(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 1ff42d3b70da2f439dc69e8046661f31c32ecc02..ea74ed1870778e902e961b20d83edb4b7fad35d3 100644 (file)
@@ -1,9 +1,11 @@
-// $Id: nj_s.c,v 2.3 2000/06/26 08:59:14 keil Exp $
+// $Id: nj_s.c,v 2.7 2000/11/24 17:05:38 kai Exp $
 //
 // This file is (c) under GNU PUBLIC LICENSE
 //
+
 #define __NO_VERSION__
 #include <linux/config.h>
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "isdnl1.h"
@@ -12,7 +14,7 @@
 #include <linux/ppp_defs.h>
 #include "netjet.h"
 
-const char *NETjet_S_revision = "$Revision: 2.3 $";
+const char *NETjet_S_revision = "$Revision: 2.7 $";
 
 static u_char dummyrr(struct IsdnCardState *cs, int chan, u_char off)
 {
@@ -47,28 +49,37 @@ netjet_s_interrupt(int intno, void *dev_id, struct pt_regs *regs)
        }
        save_flags(flags);
        cli();
-       if ((sval = bytein(cs->hw.njet.base + NETJET_IRQSTAT0))) {
+       /* start new code 13/07/00 GE */
+       /* set bits in sval to indicate which page is free */
+       if (inl(cs->hw.njet.base + NETJET_DMA_WRITE_ADR) <
+               inl(cs->hw.njet.base + NETJET_DMA_WRITE_IRQ))
+               /* the 2nd write page is free */
+               sval = 0x08;
+       else    /* the 1st write page is free */
+               sval = 0x04;
+       if (inl(cs->hw.njet.base + NETJET_DMA_READ_ADR) <
+               inl(cs->hw.njet.base + NETJET_DMA_READ_IRQ))
+               /* the 2nd read page is free */
+               sval = sval | 0x02;
+       else    /* the 1st read page is free */
+               sval = sval | 0x01;
+       if (sval != cs->hw.njet.last_is0) /* we have a DMA interrupt */
+       {
                if (test_and_set_bit(FLG_LOCK_ATOMIC, &cs->HW_Flags)) {
                        restore_flags(flags);
                        return;
                }
                cs->hw.njet.irqstat0 = sval;
                restore_flags(flags);
-/*             debugl1(cs, "tiger: ist0 %x  %x %x  %x/%x  pulse=%d",
-                       sval, 
-                       bytein(cs->hw.njet.base + NETJET_DMACTRL),
-                       bytein(cs->hw.njet.base + NETJET_IRQMASK0),
-                       inl(cs->hw.njet.base + NETJET_DMA_READ_ADR),
-                       inl(cs->hw.njet.base + NETJET_DMA_WRITE_ADR),
-                       bytein(cs->hw.njet.base + NETJET_PULSE_CNT));
-*/
-/*             cs->hw.njet.irqmask0 = ((0x0f & cs->hw.njet.irqstat0) ^ 0x0f) | 0x30;
-*/             byteout(cs->hw.njet.base + NETJET_IRQSTAT0, cs->hw.njet.irqstat0);
-/*             byteout(cs->hw.njet.base + NETJET_IRQMASK0, cs->hw.njet.irqmask0);
-*/             if (cs->hw.njet.irqstat0 & NETJET_IRQM0_READ)
+               if ((cs->hw.njet.irqstat0 & NETJET_IRQM0_READ) !=
+                       (cs->hw.njet.last_is0 & NETJET_IRQM0_READ))
+                       /* we have a read dma int */
                        read_tiger(cs);
-               if (cs->hw.njet.irqstat0 & NETJET_IRQM0_WRITE)
+               if (cs->hw.njet.irqstat0 & NETJET_IRQM0_WRITE) !=
+                       (cs->hw.njet.last_is0 & NETJET_IRQM0_WRITE))
+                       /* we have a write dma int */
                        write_tiger(cs);
+               /* end new code 13/07/00 GE */
                test_and_clear_bit(FLG_LOCK_ATOMIC, &cs->HW_Flags);
        } else
                restore_flags(flags);
@@ -93,7 +104,8 @@ reset_netjet_s(struct IsdnCardState *cs)
        byteout(cs->hw.njet.base + NETJET_CTRL, cs->hw.njet.ctrl_reg);
        set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout((10*HZ)/1000); /* Timeout 10ms */
-       cs->hw.njet.ctrl_reg = 0x00;  /* Reset Off and status read clear */
+       cs->hw.njet.ctrl_reg = 0x40;  /* Reset Off and status read clear */
+       /* now edge triggered for TJ320 GE 13/07/00 */
        byteout(cs->hw.njet.base + NETJET_CTRL, cs->hw.njet.ctrl_reg);
        set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout((10*HZ)/1000); /* Timeout 10ms */
@@ -128,17 +140,16 @@ NETjet_S_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_netjet __initdata = NULL;
+static struct pci_dev *dev_netjet __initdata;
 
-__initfunc(int
-setup_netjet_s(struct IsdnCard *card))
+int __init
+setup_netjet_s(struct IsdnCard *card)
 {
        int bytecnt;
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
        long flags;
-#if CONFIG_PCI
-#endif
+
 #ifdef __BIG_ENDIAN
 #error "not running on big endian machines now"
 #endif
index 57de4b44b64c5d93799e26168408be8153dde346..8fdea1aac6484a30a3ba05340a597f4352abdf63 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/ppp_defs.h>
 #include "netjet.h"
 
-const char *NETjet_U_revision = "$Revision: 2.4 $";
+const char *NETjet_U_revision = "$Revision: 2.8 $";
 
 static u_char dummyrr(struct IsdnCardState *cs, int chan, u_char off)
 {
@@ -94,7 +94,8 @@ reset_netjet_u(struct IsdnCardState *cs)
        byteout(cs->hw.njet.base + NETJET_CTRL, cs->hw.njet.ctrl_reg);
        set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout((10*HZ)/1000); /* Timeout 10ms */
-       cs->hw.njet.ctrl_reg = 0x00;  /* Reset Off and status read clear */
+       cs->hw.njet.ctrl_reg = 0x40;  /* Reset Off and status read clear */
+       /* now edge triggered for TJ320 GE 13/07/00 */
        byteout(cs->hw.njet.base + NETJET_CTRL, cs->hw.njet.ctrl_reg);
        set_current_state(TASK_UNINTERRUPTIBLE);
        schedule_timeout((10*HZ)/1000); /* Timeout 10ms */
@@ -130,10 +131,10 @@ NETjet_U_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_netjet __initdata = NULL;
+static struct pci_dev *dev_netjet __initdata;
 
-__initfunc(int
-setup_netjet_u(struct IsdnCard *card))
+int __init
+setup_netjet_u(struct IsdnCard *card)
 {
        int bytecnt;
        struct IsdnCardState *cs = card->cs;
@@ -155,7 +156,7 @@ setup_netjet_u(struct IsdnCard *card))
        for ( ;; )
        {
                if (!pci_present()) {
-                       printk(KERN_ERR "NETspider-U: no PCI bus present\n");
+                       printk(KERN_ERR "Netjet: no PCI bus present\n");
                        return(0);
                }
                if ((dev_netjet = pci_find_device(PCI_VENDOR_ID_TIGERJET,
@@ -241,7 +242,7 @@ setup_netjet_u(struct IsdnCard *card))
                       cs->hw.njet.base + bytecnt);
                return (0);
        } else {
-               request_region(cs->hw.njet.base, bytecnt, "netjet-u isdn");
+               request_region(cs->hw.njet.base, bytecnt, "netspider-u isdn");
        }
        reset_netjet_u(cs);
        cs->readisac  = &NETjet_ReadIC;
index 6b102bcec549c97032ccfb397a7821c76496628a..c29e765e6fa993d46068a4c84bac910a3f3e6a73 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s0box.c,v 2.3 2000/06/26 08:59:14 keil Exp $
+/* $Id: s0box.c,v 2.4 2000/11/24 17:05:38 kai Exp $
  *
  * s0box.c      low level stuff for Creatix S0BOX
  *
@@ -8,13 +8,14 @@
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-const char *s0box_revision = "$Revision: 2.3 $";
+const char *s0box_revision = "$Revision: 2.4 $";
 
 static inline void
 writereg(unsigned int padr, signed int addr, u_char off, u_char val) {
@@ -213,8 +214,8 @@ S0Box_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_s0box(struct IsdnCard *card))
+int __init
+setup_s0box(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index af2023b8180794739dfb6acca20caad70dbfb139..8f4b7c4736142b51e9e40cac80a74717dc894178 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: saphir.c,v 1.7 2000/06/26 08:59:14 keil Exp $
+/* $Id: saphir.c,v 1.8 2000/11/24 17:05:38 kai Exp $
  *
  * saphir.c low level stuff for HST Saphir 1
  *
 
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-static char *saphir_rev = "$Revision: 1.7 $";
+static char *saphir_rev = "$Revision: 1.8 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -253,8 +254,8 @@ saphir_card_msg(struct IsdnCardState *cs, int mt, void *arg)
 }
 
 
-__initfunc(int
-setup_saphir(struct IsdnCard *card))
+int __init
+setup_saphir(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 192c496b0dcb28d71ac4bc88a8fe8f68521335e0..cea237f3891bf865ef125ee9ed36c76aceafef1c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sedlbauer.c,v 1.23 2000/06/26 08:59:14 keil Exp $
+/* $Id: sedlbauer.c,v 1.25 2000/11/24 17:05:38 kai Exp $
  *
  * sedlbauer.c  low level stuff for Sedlbauer cards
  *              includes support for the Sedlbauer speed star (speed star II),
@@ -40,6 +40,7 @@
 */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include <linux/config.h>
 #include "hisax.h"
 #include "isac.h"
@@ -51,7 +52,7 @@
 
 extern const char *CardType[];
 
-const char *Sedlbauer_revision = "$Revision: 1.23 $";
+const char *Sedlbauer_revision = "$Revision: 1.25 $";
 
 const char *Sedlbauer_Types[] =
        {"None", "speed card/win", "speed star", "speed fax+", 
@@ -534,10 +535,10 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_sedl __initdata = NULL;
+static         struct pci_dev *dev_sedl __devinitdata;
 
-__initfunc(int
-setup_sedlbauer(struct IsdnCard *card))
+int __devinit
+setup_sedlbauer(struct IsdnCard *card)
 {
        int bytecnt, ver, val;
        struct IsdnCardState *cs = card->cs;
index 6b6407796d6b7e6ed69713efe204c3db1007f6a8..b72ff032c6bd46acc86fbbbe4b6905b4f5070dfd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: sportster.c,v 1.13 2000/06/26 08:59:14 keil Exp $
+/* $Id: sportster.c,v 1.14 2000/11/24 17:05:38 kai Exp $
  *
  * sportster.c     low level stuff for USR Sportster internal TA
  *
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-const char *sportster_revision = "$Revision: 1.13 $";
+const char *sportster_revision = "$Revision: 1.14 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -181,8 +182,8 @@ Sportster_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-get_io_range(struct IsdnCardState *cs))
+static int __init
+get_io_range(struct IsdnCardState *cs)
 {
        int i, j, adr;
        
@@ -207,8 +208,8 @@ get_io_range(struct IsdnCardState *cs))
        }
 }
 
-__initfunc(int
-setup_sportster(struct IsdnCard *card))
+int __init
+setup_sportster(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 2a84aa2d2bbedfb5037c25cdd5f1726574898360..41a7446b75211e326c80a904c3b2ed25cd5723f2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tei.c,v 2.15 2000/06/26 08:59:14 keil Exp $
+/* $Id: tei.c,v 2.17 2000/11/24 17:05:38 kai Exp $
  *
  * Author       Karsten Keil (keil@isdn4linux.de)
  *              based on the teles driver from Jan den Ouden
 #define __NO_VERSION__
 #include "hisax.h"
 #include "isdnl2.h"
+#include <linux/init.h>
 #include <linux/random.h>
 
-const char *tei_revision = "$Revision: 2.15 $";
+const char *tei_revision = "$Revision: 2.17 $";
 
 #define ID_REQUEST     1
 #define ID_ASSIGNED    2
@@ -28,9 +29,7 @@ const char *tei_revision = "$Revision: 2.15 $";
 
 #define TEI_ENTITY_ID  0xf
 
-static
-struct Fsm teifsm =
-{NULL, 0, 0, NULL, NULL};
+static struct Fsm teifsm;
 
 void tei_handler(struct PStack *st, u_char pr, struct sk_buff *skb);
 
@@ -430,7 +429,7 @@ release_tei(struct IsdnCardState *cs)
        }
 }
 
-static struct FsmNode TeiFnList[] HISAX_INITDATA =
+static struct FsmNode TeiFnList[] __initdata =
 {
        {ST_TEI_NOP, EV_IDREQ, tei_id_request},
        {ST_TEI_NOP, EV_ASSIGN, tei_id_test_dup},
@@ -447,8 +446,8 @@ static struct FsmNode TeiFnList[] HISAX_INITDATA =
 
 #define TEI_FN_COUNT (sizeof(TeiFnList)/sizeof(struct FsmNode))
 
-HISAX_INITFUNC(void
-TeiNew(void))
+void __init
+TeiNew(void)
 {
        teifsm.state_count = TEI_STATE_COUNT;
        teifsm.event_count = TEI_EVENT_COUNT;
index 90e0e2ec5dac05be8b713d095eb516f4fe622d34..eb65d3c8512c7bc6cc6bc98d2e97bf1f995f380e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: teleint.c,v 1.13 2000/06/26 08:59:14 keil Exp $
+/* $Id: teleint.c,v 1.14 2000/11/24 17:05:38 kai Exp $
  *
  * teleint.c     low level stuff for TeleInt isdn cards
  *
@@ -9,6 +9,7 @@
  */
 
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hfc_2bs0.h"
@@ -16,7 +17,7 @@
 
 extern const char *CardType[];
 
-const char *TeleInt_revision = "$Revision: 1.13 $";
+const char *TeleInt_revision = "$Revision: 1.14 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -260,8 +261,8 @@ TeleInt_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_TeleInt(struct IsdnCard *card))
+int __init
+setup_TeleInt(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index c9c5838a5d7685a6cc8d6101c51247686ff455c7..efbd1526654da8514efa795e6328ddc8323d1896 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: teles0.c,v 2.12 2000/06/26 08:59:14 keil Exp $
+/* $Id: teles0.c,v 2.13 2000/11/24 17:05:38 kai Exp $
  *
  * teles0.c     low level stuff for Teles Memory IO isdn cards
  *              based on the teles driver from Jan den Ouden
@@ -13,6 +13,7 @@
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isdnl1.h"
 #include "isac.h"
@@ -20,7 +21,7 @@
 
 extern const char *CardType[];
 
-const char *teles0_revision = "$Revision: 2.12 $";
+const char *teles0_revision = "$Revision: 2.13 $";
 
 #define TELES_IOMEM_SIZE       0x400
 #define byteout(addr,val) outb(val,addr)
@@ -260,8 +261,8 @@ Teles_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_teles0(struct IsdnCard *card))
+int __init
+setup_teles0(struct IsdnCard *card)
 {
        u_char val;
        struct IsdnCardState *cs = card->cs;
index 3cdbfbeb5565cc7ea6932bfaae33ee75a454a293..3fdcfb04d6442046a2f2caa950a146c1559f37da 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: teles3.c,v 2.16 2000/06/26 08:59:15 keil Exp $
+/* $Id: teles3.c,v 2.17 2000/11/24 17:05:38 kai Exp $
  *
  * teles3.c     low level stuff for Teles 16.3 & PNP isdn cards
  *
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
 #include "hscx.h"
 #include "isdnl1.h"
 
 extern const char *CardType[];
-const char *teles3_revision = "$Revision: 2.16 $";
+const char *teles3_revision = "$Revision: 2.17 $";
 
 #define byteout(addr,val) outb(val,addr)
 #define bytein(addr) inb(addr)
@@ -253,8 +254,8 @@ Teles_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-__initfunc(int
-setup_teles3(struct IsdnCard *card))
+int __devinit
+setup_teles3(struct IsdnCard *card)
 {
        u_char val;
        struct IsdnCardState *cs = card->cs;
index eb17ce33175059c792b1e26694873a2a1dd6a07d..69c6f84084e1b2f73e198d625611157ea5bab39e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: telespci.c,v 2.13 2000/06/26 08:59:15 keil Exp $
+/* $Id: telespci.c,v 2.16 2000/11/24 17:05:38 kai Exp $
  *
  * telespci.c     low level stuff for Teles PCI isdn cards
  *
@@ -9,6 +9,7 @@
  *
  */
 #define __NO_VERSION__
+#include <linux/init.h>
 #include <linux/config.h>
 #include "hisax.h"
 #include "isac.h"
@@ -17,7 +18,7 @@
 #include <linux/pci.h>
 
 extern const char *CardType[];
-const char *telespci_revision = "$Revision: 2.13 $";
+const char *telespci_revision = "$Revision: 2.16 $";
 
 #define ZORAN_PO_RQ_PEN        0x02000000
 #define ZORAN_PO_WR    0x00800000
@@ -280,10 +281,10 @@ TelesPCI_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static         struct pci_dev *dev_tel __initdata = NULL;
+static struct pci_dev *dev_tel __initdata;
 
-__initfunc(int
-setup_telespci(struct IsdnCard *card))
+int __init
+setup_telespci(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 0a2e1d4eca8c6474cd32cfa311737727a1e52e9f..989e4a31e6908846b86950153285f4ac97fdadbe 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: w6692.c,v 1.8 2000/09/07 20:33:30 werner Exp $
+/* $Id: w6692.c,v 1.12 2000/11/24 17:05:38 kai Exp $
  *
  * w6692.c   Winbond W6692 specific routines
  *
@@ -10,6 +10,7 @@
  */
 
 #include <linux/config.h>
+#include <linux/init.h>
 #define __NO_VERSION__
 #include "hisax.h"
 #include "w6692.h"
@@ -46,11 +47,11 @@ static const PCI_ENTRY id_list[] =
 
 extern const char *CardType[];
 
-const char *w6692_revision = "$Revision: 1.8 $";
+const char *w6692_revision = "$Revision: 1.12 $";
 
 #define DBUSY_TIMER_VALUE 80
 
-static char *W6692Ver[] HISAX_INITDATA =
+static char *W6692Ver[] __initdata =
 {"W6692 V00", "W6692 V01", "W6692 V10",
  "W6692 V11"};
 
@@ -869,7 +870,7 @@ setstack_w6692(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
-HISAX_INITFUNC(void initW6692(struct IsdnCardState *cs, int part))
+void __init initW6692(struct IsdnCardState *cs, int part)
 {
        if (part & 1) {
                cs->tqueue.routine = (void *) (void *) W6692_bh;
@@ -966,11 +967,12 @@ w6692_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return (0);
 }
 
-static int id_idx = 0;
+static int id_idx ;
 
-static struct pci_dev *dev_w6692 __initdata = NULL;
+static struct pci_dev *dev_w6692 __initdata;
 
-__initfunc(int setup_w6692(struct IsdnCard *card))
+int __init
+setup_w6692(struct IsdnCard *card)
 {
        struct IsdnCardState *cs = card->cs;
        char tmp[64];
index 17fc82ffc547cf8514b8634a38b88840c1a2b93b..2a2d93bfaec1f2addce11008b3f17b48497eb7a8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: boardergo.c,v 1.4 2000/11/13 22:51:47 kai Exp $
+/* $Id: boardergo.c,v 1.5 2000/11/22 17:13:13 kai Exp $
 
  * Linux driver for HYSDN cards, specific routines for ergo type boards.
  *
index f90d902e25acd791768bca470976b14757a96e6c..ddc00823f0d5efa057636befe172d5c980b82758 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hycapi.c,v 1.7 2000/11/13 22:51:47 kai Exp $
+/* $Id: hycapi.c,v 1.8 2000/11/22 17:13:13 kai Exp $
  *
  * Linux driver for HYSDN cards, CAPI2.0-Interface.
  * written by Ulrich Albrecht (u.albrecht@hypercope.de) for Hypercope GmbH
@@ -41,7 +41,7 @@
 #include "hysdn_defs.h"
 #include <linux/kernelcapi.h>
 
-static char hycapi_revision[]="$Revision: 1.7 $";
+static char hycapi_revision[]="$Revision: 1.8 $";
 
 typedef struct _hycapi_appl {
        unsigned int ctrl_mask;
index 0e4794c394def6631ea9ac159d64fb313ba72f5d..8046f35dcad9ae50beba64d69c7e0695d94b85a9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hysdn_defs.h,v 1.4 2000/11/13 22:51:47 kai Exp $
+/* $Id: hysdn_defs.h,v 1.5 2000/11/22 17:13:13 kai Exp $
 
  * Linux driver for HYSDN cards, global definitions and exported vars and functions.
  * written by Werner Cornelius (werner@titro.de) for Hypercope GmbH
index 09c59523667205ad5029df5215e0577331311861..19f55c070e522077d46921ccef5b8931710a27dd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hysdn_proclog.c,v 1.8 2000/11/13 22:51:47 kai Exp $
+/* $Id: hysdn_proclog.c,v 1.9 2000/11/25 17:01:01 kai Exp $
 
  * Linux driver for HYSDN cards, /proc/net filesystem log functions.
  * written by Werner Cornelius (werner@titro.de) for Hypercope GmbH
index 3091c2bc1622368c05d885668e1ce6d2a5fb023a..276f44d24db27a610a07973198105d1d1ec9e7cd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: hysdn_sched.c,v 1.4 2000/11/13 22:51:47 kai Exp $
+/* $Id: hysdn_sched.c,v 1.5 2000/11/22 17:13:13 kai Exp $
 
  * Linux driver for HYSDN cards, scheduler routines for handling exchange card <-> pc.
  *
index 14413285fc1c72ce99ade59d979e192d81bb4d7b..8c7636b4692d20e0c27c26d2be6d40172165d200 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn_cards.c,v 1.13 2000/10/28 23:03:38 kai Exp $
+/* $Id: isdn_cards.c,v 1.14 2000/11/23 20:45:14 kai Exp $
 
  * Linux ISDN subsystem, initialization for non-modularized drivers.
  *
@@ -38,11 +38,6 @@ extern void pcbit_init(void);
 extern void eicon_init(void);
 #endif
 
-#ifdef CONFIG_ISDN_DRV_AVMB1
-extern void kcapi_init(void);
-extern void capi_init(void);
-extern void capidrv_init(void);
-#endif
 #if CONFIG_ISDN_DRV_ACT2000
 extern void act2000_init(void);
 #endif
@@ -59,11 +54,6 @@ isdn_cards_init(void)
 #if CONFIG_ISDN_DRV_PCBIT
        pcbit_init();
 #endif
-#ifdef CONFIG_ISDN_DRV_AVMB1
-       kcapi_init();
-       capi_init();
-       capidrv_init();
-#endif
 #if CONFIG_ISDN_DRV_ACT2000
        act2000_init();
 #endif
index dc117e886fa0eb4e854bb3268a71254df18fa02e..eea88399bea26e21dee6c4673cc088da85ebf8c8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn_common.c,v 1.113 2000/11/01 17:54:00 detabc Exp $
+/* $Id: isdn_common.c,v 1.114 2000/11/25 17:00:59 kai Exp $
 
  * Linux ISDN subsystem, common used functions (linklevel).
  *
@@ -48,7 +48,7 @@
 
 isdn_dev *dev;
 
-static char *isdn_revision = "$Revision: 1.113 $";
+static char *isdn_revision = "$Revision: 1.114 $";
 
 extern char *isdn_net_revision;
 extern char *isdn_tty_revision;
index b23506ebb5042a6a641126ec0115ebfc6950be05..3ee69282447ba9c3ce4ec488a9728f88e7bb7047 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn_common.h,v 1.20 2000/06/16 13:00:27 keil Exp $
+/* $Id: isdn_common.h,v 1.21 2000/11/25 17:00:59 kai Exp $
 
  * header for Linux ISDN subsystem, common used functions and debugging-switches (linklevel).
  *
index 5ad0edc6a9eabb9e6a4d57387b708865e73c3b4e..37991ae13712a3678aca57b85b0bfb15e36ee292 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn_ppp.c,v 1.84 2000/11/13 22:51:46 kai Exp $
+/* $Id: isdn_ppp.c,v 1.85 2000/11/25 17:00:59 kai Exp $
  *
  * Linux ISDN subsystem, functions for synchronous PPP (linklevel).
  *
index 25e1139b9bec3de2a9ac607485bb89b6fde9d62b..ccf9ecf351e3d8b1b67a692be5435faeb86ad81d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn_tty.c,v 1.93 2000/08/05 09:58:26 armin Exp $
+/* $Id: isdn_tty.c,v 1.94 2000/11/25 17:00:59 kai Exp $
 
  * Linux ISDN subsystem, tty functions and AT-command emulator (linklevel).
  *
@@ -66,7 +66,7 @@ static int bit2si[8] =
 static int si2bit[8] =
 {4, 1, 4, 4, 4, 4, 4, 4};
 
-char *isdn_tty_revision = "$Revision: 1.93 $";
+char *isdn_tty_revision = "$Revision: 1.94 $";
 
 
 /* isdn_tty_try_read() is called from within isdn_tty_rcv_skb()
index fe24effde169ca9b065d9a2e0512c621c31cc688..ec318c9747a513d4c32cba5238a97e64aee05b13 100644 (file)
@@ -384,9 +384,8 @@ apne_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_pa
     /* This *shouldn't* happen. If it does, it's the last thing you'll see */
     if (ei_status.dmaing) {
        printk("%s: DMAing conflict in ne_get_8390_hdr "
-          "[DMAstat:%d][irqlock:%d][intr:%ld].\n",
-          dev->name, ei_status.dmaing, ei_status.irqlock,
-          dev->interrupt);
+          "[DMAstat:%d][irqlock:%d][intr:%d].\n",
+          dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq);
        return;
     }
 
@@ -433,9 +432,8 @@ apne_block_input(struct net_device *dev, int count, struct sk_buff *skb, int rin
     /* This *shouldn't* happen. If it does, it's the last thing you'll see */
     if (ei_status.dmaing) {
        printk("%s: DMAing conflict in ne_block_input "
-          "[DMAstat:%d][irqlock:%d][intr:%ld].\n",
-          dev->name, ei_status.dmaing, ei_status.irqlock,
-          dev->interrupt);
+          "[DMAstat:%d][irqlock:%d][intr:%d].\n",
+          dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq);
        return;
     }
     ei_status.dmaing |= 0x01;
@@ -482,9 +480,8 @@ apne_block_output(struct net_device *dev, int count,
     /* This *shouldn't* happen. If it does, it's the last thing you'll see */
     if (ei_status.dmaing) {
        printk("%s: DMAing conflict in ne_block_output."
-          "[DMAstat:%d][irqlock:%d][intr:%ld]\n",
-          dev->name, ei_status.dmaing, ei_status.irqlock,
-          dev->interrupt);
+          "[DMAstat:%d][irqlock:%d][intr:%d]\n",
+          dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq);
        return;
     }
     ei_status.dmaing |= 0x01;
index 3c675b88ebc31f1e96a18dc6f8770b98743f1e2a..e5314cec9c71a1074ee9681ea883dcba1cf01052 100644 (file)
@@ -1,4 +1,4 @@
-/* Low-level parallel port routines for the Amiga buildin port
+/* Low-level parallel port routines for the Amiga built-in port
  *
  * Author: Joerg Dorchain <joerg@dorchain.net>
  *
@@ -6,9 +6,9 @@
  * lp_intern. code.
  *
  * The built-in Amiga parallel port provides one port at a fixed address
- * with 8 bisdirecttional data lines (D0 - D7) and 3 bidirectional status
- * lines (BUSY, POUT, SEL), 1 output control line /STROBE (raised automatically in
- * hardware when the data register is accessed), and 1 input control line
+ * with 8 bidirectional data lines (D0 - D7) and 3 bidirectional status
+ * lines (BUSY, POUT, SEL), 1 output control line /STROBE (raised automatically
+ * in hardware when the data register is accessed), and 1 input control line
  * /ACK, able to cause an interrupt, but both not directly settable by
  * software.
  */
 #include <asm/setup.h>
 #include <asm/amigahw.h>
 #include <asm/irq.h>
+#include <asm/io.h>
 #include <asm/amigaints.h>
 
 #undef DEBUG
 #ifdef DEBUG
 #define DPRINTK printk
 #else
-static inline void DPRINTK(void *nothing, ...) {}
+#define DPRINTK(x...)  do { } while (0)
 #endif
 
 static struct parport *this_port = NULL;
 
 static void amiga_write_data(struct parport *p, unsigned char data)
 {
-DPRINTK("write_data %c\n",data);
+       DPRINTK("write_data %c\n",data);
        /* Triggers also /STROBE. This behavior cannot be changed */
        ciaa.prb = data;
+       mb();
 }
 
 static unsigned char amiga_read_data(struct parport *p)
@@ -71,13 +73,13 @@ static unsigned char control_amiga_to_pc(unsigned char control)
 
 static void amiga_write_control(struct parport *p, unsigned char control)
 {
-DPRINTK("write_control %02x\n",control);
+       DPRINTK("write_control %02x\n",control);
        /* No implementation possible */
 }
        
 static unsigned char amiga_read_control( struct parport *p)
 {
-DPRINTK("read_control \n");
+       DPRINTK("read_control \n");
        return control_amiga_to_pc(0);
 }
 
@@ -85,7 +87,7 @@ static unsigned char amiga_frob_control( struct parport *p, unsigned char mask,
 {
        unsigned char old;
 
-DPRINTK("frob_control mask %02x, value %02x\n",mask,val);
+       DPRINTK("frob_control mask %02x, value %02x\n",mask,val);
        old = amiga_read_control(p);
        amiga_write_control(p, (old & ~mask) ^ val);
        return old;
@@ -130,7 +132,7 @@ static unsigned char amiga_read_status(struct parport *p)
        unsigned char status;
 
        status = status_amiga_to_pc(ciab.pra & 7);
-DPRINTK("read_status %02x\n", status);
+       DPRINTK("read_status %02x\n", status);
        return status;
 }
 
@@ -154,12 +156,14 @@ static void amiga_data_forward(struct parport *p)
 {
        DPRINTK("forward\n");
        ciaa.ddrb = 0xff; /* all pins output */
+       mb();
 }
 
 static void amiga_data_reverse(struct parport *p)
 {
        DPRINTK("reverse\n");
        ciaa.ddrb = 0; /* all pins input */
+       mb();
 }
 
 static void amiga_init_state(struct pardevice *dev, struct parport_state *s)
@@ -172,18 +176,22 @@ static void amiga_init_state(struct pardevice *dev, struct parport_state *s)
 
 static void amiga_save_state(struct parport *p, struct parport_state *s)
 {
+       mb();
        s->u.amiga.data = ciaa.prb;
        s->u.amiga.datadir = ciaa.ddrb;
        s->u.amiga.status = ciab.pra & 7;
        s->u.amiga.statusdir = ciab.ddra & 7;
+       mb();
 }
 
 static void amiga_restore_state(struct parport *p, struct parport_state *s)
 {
+       mb();
        ciaa.prb = s->u.amiga.data;
        ciaa.ddrb = s->u.amiga.datadir;
        ciab.pra |= (ciab.pra & 0xf8) | s->u.amiga.status;
        ciab.ddra |= (ciab.ddra & 0xf8) | s->u.amiga.statusdir;
+       mb();
 }
 
 static void amiga_inc_use_count(void)
@@ -238,56 +246,58 @@ static struct parport_operations pp_amiga_ops = {
 int __init parport_amiga_init(void)
 {
        struct parport *p;
+       int err;
 
-       if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_PARALLEL)) {
-               if (!request_mem_region(CIAA_PHYSADDR+0x100, 1, "parallel"))
-                       return 0;
-               ciaa.ddrb = 0xff;
-               ciab.ddra &= 0xf8;
-               if (!(p = parport_register_port((unsigned long)&ciaa.prb,
-                                       IRQ_AMIGA_CIAA_FLG, PARPORT_DMA_NONE,
-                                       &pp_amiga_ops))) {
-                       release_mem_region(CIAA_PHYSADDR+0x100, 1);
-                       return 0;
-               }
-               if (!request_irq(IRQ_AMIGA_CIAA_FLG, amiga_interrupt, 0, p->name, p)) {
-                       parport_unregister_port (p);
-                       release_mem_region(CIAA_PHYSADDR+0x100, 1);
-                       return 0;
-               }
-
-               this_port = p;
-               printk(KERN_INFO "%s: Amiga built-in port using irq\n", p->name);
-               /* XXX: set operating mode */
-               parport_proc_register(p);
-
-               parport_announce_port(p);
-
-               return 1;
-
-       }
-       return 0;
-}
+       if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_PARALLEL))
+               return -ENODEV;
 
-#ifdef MODULE
+       err = -EBUSY;
+       if (!request_mem_region(CIAA_PHYSADDR-1+0x100, 0x100, "parallel"))
+               goto out_mem;
 
-MODULE_AUTHOR("Joerg Dorchain <joerg@dorchain.net>");
-MODULE_DESCRIPTION("Parport Driver for Amiga builtin Port");
-MODULE_SUPPORTED_DEVICE("Amiga builtin Parallel Port");
+       ciaa.ddrb = 0xff;
+       ciab.ddra &= 0xf8;
+       mb();
 
-int init_module(void)
-{
-       return ! parport_amiga_init();
+       p = parport_register_port((unsigned long)&ciaa.prb, IRQ_AMIGA_CIAA_FLG,
+                                  PARPORT_DMA_NONE, &pp_amiga_ops);
+       if (!p)
+               goto out_port;
+
+       err = request_irq(IRQ_AMIGA_CIAA_FLG, amiga_interrupt, 0, p->name, p);
+       if (err)
+               goto out_irq;
+
+       this_port = p;
+       printk(KERN_INFO "%s: Amiga built-in port using irq\n", p->name);
+       /* XXX: set operating mode */
+       parport_proc_register(p);
+
+       parport_announce_port(p);
+
+       return 0;
+
+out_irq:
+       parport_unregister_port(p);
+out_port:
+       release_mem_region(CIAA_PHYSADDR-1+0x100, 0x100);
+out_mem:
+       return err;
 }
 
-void cleanup_module(void)
+void __exit parport_amiga_exit(void)
 {
        if (this_port->irq != PARPORT_IRQ_NONE)
                free_irq(IRQ_AMIGA_CIAA_FLG, this_port);
        parport_proc_unregister(this_port);
        parport_unregister_port(this_port);
-       release_mem_region(CIAA_PHYSADDR+0x100, 1);
+       release_mem_region(CIAA_PHYSADDR-1+0x100, 0x100);
 }
-#endif
 
 
+MODULE_AUTHOR("Joerg Dorchain <joerg@dorchain.net>");
+MODULE_DESCRIPTION("Parport Driver for Amiga builtin Port");
+MODULE_SUPPORTED_DEVICE("Amiga builtin Parallel Port");
+
+module_init(parport_amiga_init)
+module_exit(parport_amiga_exit)
index 8df0e5a33b8ca3447dd30322d73ba4fedad7f88b..c6ee0ac4ba1fd3e2b1e32d6671c22b326b15e742 100644 (file)
@@ -112,6 +112,46 @@ parport_atari_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        parport_generic_irq(irq, (struct parport *) dev_id, regs);
 }
 
+static void
+parport_atari_enable_irq(struct parport *p)
+{
+       enable_irq(IRQ_MFP_BUSY);
+}
+
+static void
+parport_atari_disable_irq(struct parport *p)
+{
+       disable_irq(IRQ_MFP_BUSY);
+}
+
+static void
+parport_atari_data_forward(struct parport *p)
+{
+       unsigned long flags;
+
+       save_flags(flags);
+       cli();
+       /* Soundchip port B as output. */
+       sound_ym.rd_data_reg_sel = 7;
+       sound_ym.wd_data = sound_ym.rd_data_reg_sel | 0x40;
+       restore_flags(flags);
+}
+
+static void
+parport_atari_data_reverse(struct parport *p)
+{
+#if 0 /* too dangerous, can kill sound chip */
+       unsigned long flags;
+
+       save_flags(flags);
+       cli();
+       /* Soundchip port B as input. */
+       sound_ym.rd_data_reg_sel = 7;
+       sound_ym.wd_data = sound_ym.rd_data_reg_sel & ~0x40;
+       restore_flags(flags);
+#endif
+}
+
 static void
 parport_atari_inc_use_count(void)
 {
@@ -134,11 +174,11 @@ static struct parport_operations parport_atari_ops = {
 
        parport_atari_read_status,
 
-       NULL, /* enable_irq - FIXME */
-       NULL, /* disable_irq - FIXME */
+       parport_atari_enable_irq,
+       parport_atari_disable_irq,
 
-       NULL, /* data_forward - FIXME */
-       NULL, /* data_reverse - FIXME */
+       parport_atari_data_forward,
+       parport_atari_data_reverse,
 
        parport_atari_init_state,
        parport_atari_save_state,
@@ -147,18 +187,18 @@ static struct parport_operations parport_atari_ops = {
        parport_atari_inc_use_count,
        parport_atari_dec_use_count,
 
-       NULL, /* epp_write_data */
-       NULL, /* epp_read_data */
-       NULL, /* epp_write_addr */
-       NULL, /* epp_read_addr */
+       parport_ieee1284_epp_write_data,
+       parport_ieee1284_epp_read_data,
+       parport_ieee1284_epp_write_addr,
+       parport_ieee1284_epp_read_addr,
 
-       NULL, /* ecp_write_data */
-       NULL, /* ecp_read_data */
-       NULL, /* ecp_write_addr */
+       parport_ieee1284_ecp_write_data,
+       parport_ieee1284_ecp_read_data,
+       parport_ieee1284_ecp_write_addr,
 
-       NULL, /* compat_write_data */
-       NULL, /* nibble_read_data */
-       NULL, /* byte_read_data */
+       parport_ieee1284_write_compat,
+       parport_ieee1284_read_nibble,
+       parport_ieee1284_read_byte,
 };
 
 
index 19045439e3d8c29321f2868fc3474a586be42756..51e80b4ce01dc217780e09861f7ec27787b69d66 100644 (file)
@@ -332,75 +332,83 @@ static struct parport_operations pp_mfc3_ops = {
 int __init parport_mfc3_init(void)
 {
        struct parport *p;
-       int pias = 0;
+       int pias;
        struct pia *pp;
        struct zorro_dev *z = NULL;
 
        if (!MACH_IS_AMIGA)
-               return 0;
+               return -ENODEV;
 
        while ((z = zorro_find_device(ZORRO_PROD_BSC_MULTIFACE_III, z))) {
                unsigned long piabase = z->resource.start+PIABASE;
                if (!request_mem_region(piabase, sizeof(struct pia), "PIA"))
                        continue;
+
                pp = (struct pia *)ZTWO_VADDR(piabase);
-               if (pias < MAX_MFC) {
-                       pp->crb = 0;
-                       pp->pddrb = 255; /* all data pins output */
-                       pp->crb = PIA_DDR|32|8;
-                       dummy = pp->pddrb; /* reading clears interrupt */
-                       pp->cra = 0;
-                       pp->pddra = 0xe0; /* /RESET,  /DIR ,/AUTO-FEED output */
-                       pp->cra = PIA_DDR;
-                       pp->ppra = 0; /* reset printer */
-                       udelay(10);
-                       pp->ppra = 128;
-                       if ((p = parport_register_port((unsigned long)pp,
-                               IRQ_AMIGA_PORTS, PARPORT_DMA_NONE,
-                               &pp_mfc3_ops))) {
-                               this_port[pias++] = p;
-                               printk(KERN_INFO "%s: Multiface III port using irq\n", p->name);
-                               /* XXX: set operating mode */
-                               parport_proc_register(p);
-
-                               if (p->irq != PARPORT_IRQ_NONE)
-                                       if (use_cnt++ == 0)
-                                               if (request_irq(IRQ_AMIGA_PORTS, mfc3_interrupt, SA_SHIRQ, p->name, &pp_mfc3_ops))
-                                                       use_cnt--;
-
-                               p->private_data = (void *)piabase;
-                               parport_announce_port (p);
-                       }
+               pp->crb = 0;
+               pp->pddrb = 255; /* all data pins output */
+               pp->crb = PIA_DDR|32|8;
+               dummy = pp->pddrb; /* reading clears interrupt */
+               pp->cra = 0;
+               pp->pddra = 0xe0; /* /RESET,  /DIR ,/AUTO-FEED output */
+               pp->cra = PIA_DDR;
+               pp->ppra = 0; /* reset printer */
+               udelay(10);
+               pp->ppra = 128;
+               p = parport_register_port((unsigned long)pp, IRQ_AMIGA_PORTS,
+                                         PARPORT_DMA_NONE, &pp_mfc3_ops);
+               if (!p)
+                       goto out_port;
+
+               if (p->irq != PARPORT_IRQ_NONE) {
+                       if (use_cnt++ == 0)
+                               if (request_irq(IRQ_AMIGA_PORTS, mfc3_interrupt, SA_SHIRQ, p->name, &pp_mfc3_ops))
+                                       goto out_irq;
                }
-       }
-       return pias;
-}
 
-#ifdef MODULE
+               this_port[pias++] = p;
+               printk(KERN_INFO "%s: Multiface III port using irq\n", p->name);
+               /* XXX: set operating mode */
+               parport_proc_register(p);
 
-MODULE_AUTHOR("Joerg Dorchain <joerg@dorchain.net>");
-MODULE_DESCRIPTION("Parport Driver for Multiface 3 expansion cards Paralllel Port");
-MODULE_SUPPORTED_DEVICE("Multiface 3 Parallel Port");
+               p->private_data = (void *)piabase;
+               parport_announce_port (p);
 
-int init_module(void)
-{
-       return ! parport_mfc3_init();
+               if (pias >= MAX_MFC)
+                       break;
+               continue;
+
+       out_irq:
+               parport_unregister_port(p);
+       out_port:
+               release_mem_region(piabase, sizeof(struct pia));
+       }
+
+       return pias ? 0 : -ENODEV;
 }
 
-void cleanup_module(void)
+void __exit parport_mfc3_exit(void)
 {
        int i;
 
-       for (i = 0; i < MAX_MFC; i++)
-               if (this_port[i] != NULL) {
-                       if (p->irq != PARPORT_IRQ_NONE) 
-                               if (--use_cnt == 0) 
-                       free_irq(IRQ_AMIGA_PORTS, &pp_mfc3_ops);
-                       parport_proc_unregister(this_port[i]);
-                       parport_unregister_port(this_port[i]);
-                       release_mem_region(ZTWO_PADDR(this_port[i]->private_data), sizeof(struct pia));
+       for (i = 0; i < MAX_MFC; i++) {
+               if (!this_port[i])
+                       continue;
+               if (!this_port[i]->irq != PARPORT_IRQ_NONE) {
+                       if (--use_cnt == 0) 
+                               free_irq(IRQ_AMIGA_PORTS, &pp_mfc3_ops);
                }
+               parport_proc_unregister(this_port[i]);
+               parport_unregister_port(this_port[i]);
+               release_mem_region(ZTWO_PADDR(this_port[i]->private_data), sizeof(struct pia));
+       }
 }
-#endif
 
 
+MODULE_AUTHOR("Joerg Dorchain <joerg@dorchain.net>");
+MODULE_DESCRIPTION("Parport Driver for Multiface 3 expansion cards Paralllel Port");
+MODULE_SUPPORTED_DEVICE("Multiface 3 Parallel Port");
+
+module_init(parport_mfc3_init)
+module_exit(parport_mfc3_exit)
+
index f90c2352011774e5934397409eb669a0ffd6c1e9..ad3c532decf267fd39b30a8d32a01a381843745e 100644 (file)
@@ -755,7 +755,7 @@ static int __init pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int
 
        pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
        DBG("Scanning behind PCI bridge %s, config %06x, pass %d\n", dev->slot_name, buses & 0xffffff, pass);
-       if ((buses & 0xffffff) && !pcibios_assign_all_busses()) {
+       if ((buses & 0xffff00) && !pcibios_assign_all_busses()) {
                /*
                 * Bus already configured by firmware, process it in the first
                 * pass and just note the configuration.
@@ -772,8 +772,10 @@ static int __init pci_scan_bridge(struct pci_bus *bus, struct pci_dev * dev, int
                        if (cmax > max) max = cmax;
                } else {
                        int i;
+                       unsigned int cmax = child->subordinate;
                        for (i = 0; i < 4; i++)
                                child->resource[i] = &dev->resource[PCI_BRIDGE_RESOURCES+i];
+                       if (cmax > max) max = cmax;
                }
        } else {
                /*
index 9d3584a2582718b483450c962959f563157982c5..dd5f627d3ce07e9885819172f93ab4e2624a967c 100644 (file)
@@ -1416,6 +1416,7 @@ int aha1542_dev_reset(Scsi_Cmnd * SCpnt)
                        SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
                        if (SCtmp->host_scribble) {
                                scsi_free(SCtmp->host_scribble, 512);
+                               SCtmp->host_scribble = NULL;
                        }
                        HOSTDATA(SCpnt->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->host)->mb[i].status = 0;
@@ -1478,6 +1479,7 @@ int aha1542_bus_reset(Scsi_Cmnd * SCpnt)
                        }
                        if (SCtmp->host_scribble) {
                                scsi_free(SCtmp->host_scribble, 512);
+                               SCtmp->host_scribble = NULL;
                        }
                        HOSTDATA(SCpnt->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->host)->mb[i].status = 0;
@@ -1546,6 +1548,7 @@ int aha1542_host_reset(Scsi_Cmnd * SCpnt)
                        }
                        if (SCtmp->host_scribble) {
                                scsi_free(SCtmp->host_scribble, 512);
+                               SCtmp->host_scribble = NULL;
                        }
                        HOSTDATA(SCpnt->host)->SCint[i] = NULL;
                        HOSTDATA(SCpnt->host)->mb[i].status = 0;
@@ -1681,8 +1684,10 @@ int aha1542_old_reset(Scsi_Cmnd * SCpnt, unsigned int reset_flags)
                                Scsi_Cmnd *SCtmp;
                                SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
                                SCtmp->result = DID_RESET << 16;
-                               if (SCtmp->host_scribble)
+                               if (SCtmp->host_scribble) {
                                        scsi_free(SCtmp->host_scribble, 512);
+                                       SCtmp->host_scribble = NULL;
+                               }
                                printk(KERN_WARNING "Sending DID_RESET for target %d\n", SCpnt->target);
                                SCtmp->scsi_done(SCpnt);
 
@@ -1725,8 +1730,10 @@ fail:
                                                Scsi_Cmnd *SCtmp;
                                                SCtmp = HOSTDATA(SCpnt->host)->SCint[i];
                                                SCtmp->result = DID_RESET << 16;
-                                               if (SCtmp->host_scribble)
+                                               if (SCtmp->host_scribble) {
                                                        scsi_free(SCtmp->host_scribble, 512);
+                                                       SCtmp->host_scribble = NULL;
+                                               }
                                                printk(KERN_WARNING "Sending DID_RESET for target %d\n", SCpnt->target);
                                                SCtmp->scsi_done(SCpnt);
 
index 740089274d01c66acc0ae660defccab1aa154bd1..0aa3b1670d43a0e64eb0bc3d369852fc409de137 100644 (file)
  * this thing into as good a shape as possible, and I'm positive
  * there are lots of lurking bugs and "Stupid Places".
  *
+ * Updates:
+ *
+ * Added support for pre -A chips, which don't have advanced features
+ * and will generate CSR_RESEL rather than CSR_RESEL_AM.
+ *     Richard Hirst <richard@sleepie.demon.co.uk>  August 2000
  */
 
 #include <linux/module.h>
@@ -1251,11 +1256,16 @@ DB(DB_INTR,printk(":%d",cmd->SCp.Status))
 
 
       case CSR_RESEL_AM:
-DB(DB_INTR,printk("RESEL"))
-
-   /* First we have to make sure this reselection didn't */
-   /* happen during Arbitration/Selection of some other device. */
-   /* If yes, put losing command back on top of input_Q. */
+      case CSR_RESEL:
+DB(DB_INTR,printk("RESEL%s", sr == CSR_RESEL_AM ? "_AM" : ""))
+
+   /* Old chips (pre -A ???) don't have advanced features and will
+    * generate CSR_RESEL.  In that case we have to extract the LUN the
+    * hard way (see below).
+    * First we have to make sure this reselection didn't
+    * happen during Arbitration/Selection of some other device.
+    * If yes, put losing command back on top of input_Q.
+    */
 
          if (hostdata->level2 <= L2_NONE) {
 
@@ -1295,10 +1305,53 @@ DB(DB_INTR,printk("RESEL"))
     * not the right way to go, but...)
     */
 
-         lun = read_wd33c93(regp, WD_DATA);
-         if (hostdata->level2 < L2_RESELECT)
-            write_wd33c93_cmd(regp,WD_CMD_NEGATE_ACK);
-         lun &= 7;
+         if (sr == CSR_RESEL_AM) {
+            lun = read_wd33c93(regp, WD_DATA);
+            if (hostdata->level2 < L2_RESELECT)
+               write_wd33c93_cmd(regp,WD_CMD_NEGATE_ACK);
+            lun &= 7;
+         }
+         else {
+            /* Old chip; wait for msgin phase to pick up the LUN. */
+            for (lun = 255; lun; lun--) {
+               if ((asr = READ_AUX_STAT()) & ASR_INT)
+                  break;
+               udelay(10);
+            }
+            if (!(asr & ASR_INT)) {
+               printk("wd33c93: Reselected without IDENTIFY\n");
+               lun = 0;
+            }
+            else {
+               /* Verify this is a change to MSG_IN and read the message */
+               sr = read_wd33c93(regp, WD_SCSI_STATUS);
+               if (sr == (CSR_ABORT   | PHS_MESS_IN) ||
+                   sr == (CSR_UNEXP   | PHS_MESS_IN) ||
+                   sr == (CSR_SRV_REQ | PHS_MESS_IN)) {
+                  /* Got MSG_IN, grab target LUN */
+                  lun = read_1_byte(regp);
+                  /* Now we expect a 'paused with ACK asserted' int.. */
+                  asr = READ_AUX_STAT();
+                  if (!(asr & ASR_INT)) {
+                     udelay(10);
+                     asr = READ_AUX_STAT();
+                     if (!(asr & ASR_INT))
+                        printk("wd33c93: No int after LUN on RESEL (%02x)\n",
+                              asr);
+                  }
+                  sr = read_wd33c93(regp, WD_SCSI_STATUS);
+                  if (sr != CSR_MSGIN)
+                     printk("wd33c93: Not paused with ACK on RESEL (%02x)\n",
+                           sr);
+                  lun &= 7;
+                  write_wd33c93_cmd(regp,WD_CMD_NEGATE_ACK);
+               }
+               else {
+                  printk("wd33c93: Not MSG_IN on reselect (%02x)\n", sr);
+                  lun = 0;
+               }
+            }
+         }
 
    /* Now we look for the command that's reconnecting. */
 
@@ -1372,6 +1425,9 @@ uchar sr;
    write_wd33c93(regp, WD_SYNCHRONOUS_TRANSFER,
                  calc_sync_xfer(hostdata->default_sx_per/4,DEFAULT_SX_OFF));
    write_wd33c93(regp, WD_COMMAND, WD_CMD_RESET);
+#ifdef CONFIG_MVME147_SCSI
+   udelay(25); /* The old wd33c93 on MVME147 needs this, at least */
+#endif
 
    while (!(READ_AUX_STAT() & ASR_INT))
       ;
index 331343d15799dd96c0d161dd62bbd4e1092b6024..c0fa1668f86f758e099ad81c2764222d578db8fb 100644 (file)
@@ -68,7 +68,7 @@ obj-$(CONFIG_FB_CYBER)            += cyberfb.o
 obj-$(CONFIG_FB_CYBER2000)        += cyber2000fb.o
 obj-$(CONFIG_FB_SGIVW)            += sgivwfb.o
 obj-$(CONFIG_FB_3DFX)             += tdfxfb.o
-obj-$(CONFIG_FB_MAC)              += macfb.o
+obj-$(CONFIG_FB_MAC)              += macfb.o macmodes.o
 obj-$(CONFIG_FB_HP300)            += hpfb.o
 obj-$(CONFIG_FB_OF)               += offb.o
 obj-$(CONFIG_FB_IMSTT)            += imsttfb.o
index 8f984ae126f927fd28391ce03b8cebfca12f880d..d1ff9c8cc654e9213747542c914e9f96d07aa95d 100644 (file)
@@ -17,7 +17,9 @@
 #include <linux/fb.h>
 #include <linux/string.h>
 
+#ifdef CONFIG_FB_COMPAT_XPMAC
 #include <asm/vc_ioctl.h>
+#endif
 
 #include <video/fbcon.h>
 #include <video/macmodes.h>
index c9915cf809a02145b9f22c2e6027336742dcb716..6423b0eb7a10bce3461ae22ad6924613154dfdf9 100644 (file)
@@ -115,9 +115,6 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
        char *p = NULL;         /* Quiet GCC */
        struct iso_directory_record *de;
 
-       if (filp->f_pos >= inode->i_size)
-               return 0;
        offset = filp->f_pos & (bufsize - 1);
        block = filp->f_pos >> bufbits;
        high_sierra = inode->i_sb->u.isofs_sb.s_high_sierra;
@@ -132,7 +129,8 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
                }
 
                de = (struct iso_directory_record *) (bh->b_data + offset);
-               if (first_de) inode_number = (bh->b_blocknr << bufbits) + offset;
+               if (first_de)
+                       inode_number = (bh->b_blocknr << bufbits) + offset;
 
                de_len = *(unsigned char *) de;
 
@@ -207,7 +205,7 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
                map = 1;
                if (inode->i_sb->u.isofs_sb.s_rock) {
                        len = get_rock_ridge_filename(de, tmpname, inode);
-                       if (len != 0) {
+                       if (len != 0) {         /* may be -1 */
                                p = tmpname;
                                map = 0;
                        }
index 453e4a456c368c303d90464a89edb0229fb0c524..d75edccf67f8f5db5e7ec7fa030f429de2e53d95 100644 (file)
@@ -45,14 +45,14 @@ static int check_bread = 0;
 
 static int isofs_hashi(struct dentry *parent, struct qstr *qstr);
 static int isofs_hash(struct dentry *parent, struct qstr *qstr);
-static int isofs_cmpi(struct dentry *dentry, struct qstr *a, struct qstr *b);
-static int isofs_cmp(struct dentry *dentry, struct qstr *a, struct qstr *b);
+static int isofs_dentry_cmpi(struct dentry *dentry, struct qstr *a, struct qstr *b);
+static int isofs_dentry_cmp(struct dentry *dentry, struct qstr *a, struct qstr *b);
 
 #ifdef CONFIG_JOLIET
 static int isofs_hashi_ms(struct dentry *parent, struct qstr *qstr);
 static int isofs_hash_ms(struct dentry *parent, struct qstr *qstr);
-static int isofs_cmpi_ms(struct dentry *dentry, struct qstr *a, struct qstr *b);
-static int isofs_cmp_ms(struct dentry *dentry, struct qstr *a, struct qstr *b);
+static int isofs_dentry_cmpi_ms(struct dentry *dentry, struct qstr *a, struct qstr *b);
+static int isofs_dentry_cmp_ms(struct dentry *dentry, struct qstr *a, struct qstr *b);
 #endif
 
 static void isofs_put_super(struct super_block *sb)
@@ -84,20 +84,20 @@ static struct super_operations isofs_sops = {
 static struct dentry_operations isofs_dentry_ops[] = {
        {
                d_hash:         isofs_hash,
-               d_compare:      isofs_cmp,
+               d_compare:      isofs_dentry_cmp,
        },
        {
                d_hash:         isofs_hashi,
-               d_compare:      isofs_cmpi,
+               d_compare:      isofs_dentry_cmpi,
        },
 #ifdef CONFIG_JOLIET
        {
                d_hash:         isofs_hash_ms,
-               d_compare:      isofs_cmp_ms,
+               d_compare:      isofs_dentry_cmp_ms,
        },
        {
                d_hash:         isofs_hashi_ms,
-               d_compare:      isofs_cmpi_ms,
+               d_compare:      isofs_dentry_cmpi_ms,
        }
 #endif
 };
@@ -173,7 +173,7 @@ isofs_hashi_common(struct dentry *dentry, struct qstr *qstr, int ms)
  * Case insensitive compare of two isofs names.
  */
 static int
-isofs_cmpi_common(struct dentry *dentry,struct qstr *a,struct qstr *b,int ms)
+isofs_dentry_cmpi_common(struct dentry *dentry,struct qstr *a,struct qstr *b,int ms)
 {
        int alen, blen;
 
@@ -197,7 +197,7 @@ isofs_cmpi_common(struct dentry *dentry,struct qstr *a,struct qstr *b,int ms)
  * Case sensitive compare of two isofs names.
  */
 static int
-isofs_cmp_common(struct dentry *dentry,struct qstr *a,struct qstr *b,int ms)
+isofs_dentry_cmp_common(struct dentry *dentry,struct qstr *a,struct qstr *b,int ms)
 {
        int alen, blen;
 
@@ -230,15 +230,15 @@ isofs_hashi(struct dentry *dentry, struct qstr *qstr)
 }
 
 static int
-isofs_cmp(struct dentry *dentry,struct qstr *a,struct qstr *b)
+isofs_dentry_cmp(struct dentry *dentry,struct qstr *a,struct qstr *b)
 {
-       return isofs_cmp_common(dentry, a, b, 0);
+       return isofs_dentry_cmp_common(dentry, a, b, 0);
 }
 
 static int
-isofs_cmpi(struct dentry *dentry,struct qstr *a,struct qstr *b)
+isofs_dentry_cmpi(struct dentry *dentry,struct qstr *a,struct qstr *b)
 {
-       return isofs_cmpi_common(dentry, a, b, 0);
+       return isofs_dentry_cmpi_common(dentry, a, b, 0);
 }
 
 #ifdef CONFIG_JOLIET
@@ -255,15 +255,15 @@ isofs_hashi_ms(struct dentry *dentry, struct qstr *qstr)
 }
 
 static int
-isofs_cmp_ms(struct dentry *dentry,struct qstr *a,struct qstr *b)
+isofs_dentry_cmp_ms(struct dentry *dentry,struct qstr *a,struct qstr *b)
 {
-       return isofs_cmp_common(dentry, a, b, 1);
+       return isofs_dentry_cmp_common(dentry, a, b, 1);
 }
 
 static int
-isofs_cmpi_ms(struct dentry *dentry,struct qstr *a,struct qstr *b)
+isofs_dentry_cmpi_ms(struct dentry *dentry,struct qstr *a,struct qstr *b)
 {
-       return isofs_cmpi_common(dentry, a, b, 1);
+       return isofs_dentry_cmpi_common(dentry, a, b, 1);
 }
 #endif
 
@@ -500,15 +500,13 @@ static struct super_block *isofs_read_super(struct super_block *s, void *data,
         * that value.
         */
        blocksize = get_hardblocksize(dev);
-       if(    (blocksize != 0)
-           && (blocksize > opt.blocksize) )
-         {
+       if(blocksize > opt.blocksize) {
            /*
             * Force the blocksize we are going to use to be the
             * hardware blocksize.
             */
            opt.blocksize = blocksize;
-         }
+       }
  
        blocksize_bits = 0;
        {
@@ -605,9 +603,8 @@ static struct super_block *isofs_read_super(struct super_block *s, void *data,
        pri_bh = NULL;
 
 root_found:
-       brelse(pri_bh);
 
-       if (joliet_level && opt.rock == 'n') {
+       if (joliet_level && (pri == NULL || opt.rock == 'n')) {
            /* This is the case of Joliet with the norock mount flag.
             * A disc with both Joliet and Rock Ridge is handled later
             */
@@ -704,6 +701,7 @@ root_found:
         * We're all done using the volume descriptor, and may need
         * to change the device blocksize, so release the buffer now.
         */
+       brelse(pri_bh);
        brelse(bh);
 
        /*
@@ -873,7 +871,7 @@ static int isofs_statfs (struct super_block *sb, struct statfs *buf)
 /* Life is simpler than for other filesystem since we never
  * have to create a new block, only find an existing one.
  */
-int isofs_get_block(struct inode *inode, long iblock,
+static int isofs_get_block(struct inode *inode, long iblock,
                    struct buffer_head *bh_result, int create)
 {
        unsigned long b_off;
@@ -940,26 +938,26 @@ abort:
        return err;
 
 abort_create_attempted:
-       printk("_isofs_bmap: Kernel tries to allocate a block\n");
+       printk("isofs_get_block: Kernel tries to allocate a block\n");
        goto abort;
 
 abort_negative:
-       printk("_isofs_bmap: block < 0\n");
+       printk("isofs_get_block: block < 0\n");
        goto abort;
 
 abort_beyond_end:
-       printk("_isofs_bmap: block >= EOF (%ld, %ld)\n",
+       printk("isofs_get_block: block >= EOF (%ld, %ld)\n",
               iblock, (unsigned long) inode->i_size);
        goto abort;
 
 abort_too_many_sections:
-       printk("isofs_bmap: More than 100 file sections ?!?, aborting...\n");
-       printk("isofs_bmap: ino=%lu block=%ld firstext=%u sect_size=%u nextino=%lu\n",
+       printk("isofs_get_block: More than 100 file sections ?!?, aborting...\n");
+       printk("isofs_get_block: ino=%lu block=%ld firstext=%u sect_size=%u nextino=%lu\n",
               inode->i_ino, iblock, firstext, (unsigned) sect_size, nextino);
        goto abort;
 }
 
-int isofs_bmap(struct inode *inode, int block)
+static int isofs_bmap(struct inode *inode, int block)
 {
        struct buffer_head dummy;
        int error;
index 4473f7c0dee03987a12deac3626b6402a30490bb..24872970aed2621e27c8b318fe5e2ababdc97b74 100644 (file)
@@ -53,9 +53,7 @@ isofs_cmp(struct dentry * dentry, const char * compare, int dlen)
  *     isofs_find_entry()
  *
  * finds an entry in the specified directory with the wanted name. It
- * returns the cache buffer in which the entry was found, and the entry
- * itself (as an inode number). It does NOT read the inode of the
- * entry - you'll have to do that yourself if you want to.
+ * returns the inode number of the found entry, or 0 on error.
  */
 static unsigned long
 isofs_find_entry(struct inode *dir, struct dentry *dentry,
@@ -123,7 +121,7 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry,
 
                if (dir->i_sb->u.isofs_sb.s_rock &&
                    ((i = get_rock_ridge_filename(de, tmpname, dir)))) {
-                       dlen = i;
+                       dlen = i;       /* possibly -1 */
                        dpnt = tmpname;
 #ifdef CONFIG_JOLIET
                } else if (dir->i_sb->u.isofs_sb.s_joliet_level) {
@@ -142,8 +140,9 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry,
                 * Skip hidden or associated files unless unhide is set 
                 */
                match = 0;
-               if ((!(de->flags[-dir->i_sb->u.isofs_sb.s_high_sierra] & 5)
-                   || dir->i_sb->u.isofs_sb.s_unhide == 'y') && dlen)
+               if (dlen > 0 &&
+                   (!(de->flags[-dir->i_sb->u.isofs_sb.s_high_sierra] & 5)
+                    || dir->i_sb->u.isofs_sb.s_unhide == 'y'))
                {
                        match = (isofs_cmp(dentry,dpnt,dlen) == 0);
                }
index b2eff877f570d43d0dca6d3320a75a411043eb9a..a2511444d66932f6276c0d0d915eef75cff1d513 100644 (file)
@@ -152,6 +152,7 @@ int find_rock_ridge_relocation(struct iso_directory_record * de,
   return retval;
 }
 
+/* return length of name field; 0: not found, -1: to be ignored */
 int get_rock_ridge_filename(struct iso_directory_record * de,
                            char * retname, struct inode * inode)
 {
@@ -215,7 +216,7 @@ int get_rock_ridge_filename(struct iso_directory_record * de,
        printk("RR: RE (%x)\n", inode->i_ino);
 #endif
        if (buffer) kfree(buffer);
-       return 0;
+       return -1;
       default:
        break;
       }
index e58b04e02ebb535529163d9f61b1e9aba6b1e6c1..96509df07dd591386a8afabbc025a35413bda1ae 100644 (file)
@@ -336,6 +336,7 @@ int proc_readdir(struct file * filp,
  * the /proc directory.
  */
 static struct file_operations proc_dir_operations = {
+       read:                   generic_read_dir,
        readdir:                proc_readdir,
 };
 
index cae8619608daed48f95f9d7334de58170a172ab7..c54369a320cf81e0014187791abe40612790eeaa 100644 (file)
@@ -82,6 +82,7 @@ static int proc_root_readdir(struct file * filp,
  * directory handling functions for that..
  */
 static struct file_operations proc_root_operations = {
+       read:            generic_read_dir,
        readdir:         proc_root_readdir,
 };
 
index fb4d819f4d04da76fafa108f11c4c85026cbdd06..3c21224b54643f4e27155f9afcf9df279efe9d41 100644 (file)
 #define TASK_SIZE      (0x01a00000UL)
 #define TASK_SIZE_26   (0x01a00000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 32MB
  */
diff --git a/include/asm-arm/arch-arc/processor.h b/include/asm-arm/arch-arc/processor.h
deleted file mode 100644 (file)
index 7eea170..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  linux/include/asm-arm/arch-arc/processor.h
- *
- *  Copyright (c) 1996-1999 Russell King.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Changelog:
- *   10-Sep-1996 RMK   Created
- *   21-Mar-1999 RMK   Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index a1811df0c6614bbf62326076e4e0053ac53c6838..56e1d3bfcb62e8ba59ad552ebb1bc58f75842ee1 100644 (file)
 #define TASK_SIZE      (0xc0000000UL)
 #define TASK_SIZE_26   (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 3GB
  */
diff --git a/include/asm-arm/arch-cl7500/processor.h b/include/asm-arm/arch-cl7500/processor.h
deleted file mode 100644 (file)
index 3f75f16..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * linux/include/asm-arm/arch-cl7500/processor.h
- *
- * Copyright (c) 1996-1999 Russell King.
- *
- * Changelog:
- *  10-Sep-1996        RMK     Created
- *  21-Mar-1999        RMK     Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index 44747379c48dac735ce43b9f0a468705c4e2500b..21157a5c34322efb67723791de91c11fdbd39161 100644 (file)
@@ -94,8 +94,6 @@
 #define XBUS_SWITCH_J17_11     ((*XBUS_SWITCH) & (1 << 5))
 #define XBUS_SWITCH_J17_9      ((*XBUS_SWITCH) & (1 << 6))
 
-#define PARAMS_OFFSET          0x0100
-
 #define FLUSH_BASE_PHYS                0x50000000
 #define UNCACHEABLE_ADDR       (ARMCSR_BASE + 0x108)
 
@@ -133,4 +131,9 @@ extern int  gpio_read(void);
 extern void cpld_modify(int mask, int set);
 #endif
 
+#define pcibios_assign_all_busses()    1
+
+#define PCIBIOS_MIN_IO         0x6000
+#define PCIBIOS_MIN_MEM        0x40000000
+
 #endif
index 98172671fae8f959399eb188fc7fa67ad6213990..41e730ceaf0ef6e9d34720ca06b3983aecedd833 100644 (file)
@@ -66,6 +66,12 @@ extern unsigned long __bus_to_virt(unsigned long);
 #define TASK_SIZE_26           (0x04000000UL)
 #define PHYS_OFFSET            (0x00000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * The DRAM is always contiguous.
  */
diff --git a/include/asm-arm/arch-ebsa285/processor.h b/include/asm-arm/arch-ebsa285/processor.h
deleted file mode 100644 (file)
index 1c05610..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  linux/include/asm-arm/arch-ebsa110/processor.h
- *
- *  Copyright (C) 1996-1999 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Changelog:
- *   21-Mar-1999 RMK   Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index a9209af7b455c690ee5c6641d1ce2d2046522b0f..506192bc84400fbd88c13339cb0cb16dfcd16349 100644 (file)
@@ -41,9 +41,6 @@
 #define FLUSH_BASE_PHYS                0x40000000      /* ROM */
 #define FLUSH_BASE             0xdf000000
 
-#define PARAMS_OFFSET          (0x0100)
-#define Z_PARAMS_BASE          (RAM_START + PARAMS_OFFSET)
-
 #define PCIO_BASE              IO_BASE
 
 #endif
index d07a1ddc1a49db9004cd3e1579d4b70f8acc3985..a34a0f9a41bba89481dc7c3ed8d987041a59b45b 100644 (file)
 #define TASK_SIZE       (0xc0000000UL)
 #define TASK_SIZE_26    (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 3GB
  */
diff --git a/include/asm-arm/arch-l7200/processor.h b/include/asm-arm/arch-l7200/processor.h
deleted file mode 100644 (file)
index ee4b4b2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * linux/include/asm-arm/arch-l7200/processor.h
- *
- * Copyright (c) 2000 Steven Hill (sjhill@cotw.com)
- *
- * Changelog:
- *  03-21-2000 SJH     Created
- *  05-03-2000 SJH     Comment cleaning
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index de0429b6bc9445e8910e404adedd6ceb644090cf..a7e644257805c52e438d85695c1907bd45e441d2 100644 (file)
 #define TASK_SIZE      (0xc0000000UL)
 #define TASK_SIZE_26   (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 3GB
  */
diff --git a/include/asm-arm/arch-nexuspci/processor.h b/include/asm-arm/arch-nexuspci/processor.h
deleted file mode 100644 (file)
index 542dd91..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * linux/include/asm-arm/arch-nexuspci/processor.h
- *  from linux/include/asm-arm/arch-ebsa110/processor.h
- *
- * Copyright (C) 1996-1999 Russell King
- *
- * Changelog:
- *  21-Mar-1999        RMK     Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index 2b3899173bcbbee556c9c41b483e50f3d4c30dd2..cf562f87f7b5a83fcdf156020ce813351a9aabe1 100644 (file)
 #define TASK_SIZE      (0xc0000000UL)
 #define TASK_SIZE_26   (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 3GB
  */
diff --git a/include/asm-arm/arch-rpc/processor.h b/include/asm-arm/arch-rpc/processor.h
deleted file mode 100644 (file)
index b64eaeb..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  linux/include/asm-arm/arch-rpc/processor.h
- *
- *  Copyright (C) 1996-1999 Russell King.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Changelog:
- *   10-Sep-1996 RMK   Created
- *   21-Mar-1999 RMK   Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index 0834d287eb6126a7ca7d4e914d8489e79293faa9..dde1bfc7af20a89e242621bfea20c3426b6384fb 100644 (file)
@@ -56,7 +56,7 @@ static const unsigned long palette_4[16] = {
 #define palette_setpixel(p)    *(unsigned long *)(IO_START+0x00400000) = 0x10000000|((p) & 255)
 #define palette_write(v)       *(unsigned long *)(IO_START+0x00400000) = 0x00000000|((v) & 0x00ffffff)
 
-static struct param_struct * const params = (struct param_struct *)Z_PARAMS_BASE;
+extern struct param_struct params;
 
 #ifndef STANDALONE_DEBUG 
 /*
@@ -69,8 +69,8 @@ static void puts(const char *s)
        unsigned char c;
        char *ptr;
 
-       x = params->video_x;
-       y = params->video_y;
+       x = params.video_x;
+       y = params.video_y;
 
        while ( ( c = *(unsigned char *)s++ ) != '\0' ) {
                if ( c == '\n' ) {
@@ -79,7 +79,7 @@ static void puts(const char *s)
                                y--;
                        }
                } else {
-                       ptr = VIDMEM + ((y*video_num_columns*params->bytes_per_char_v+x)*bytes_per_char_h);
+                       ptr = VIDMEM + ((y*video_num_columns*params.bytes_per_char_v+x)*bytes_per_char_h);
                        ll_write_char(ptr, c|(white<<16));
                        if ( ++x >= video_num_columns ) {
                                x = 0;
@@ -90,8 +90,8 @@ static void puts(const char *s)
                }
        }
 
-       params->video_x = x;
-       params->video_y = y;
+       params.video_x = x;
+       params.video_y = y;
 }
 
 static void error(char *x);
@@ -103,9 +103,9 @@ static void arch_decomp_setup(void)
 {
        int i;
        
-       video_num_lines = params->video_num_rows;
-       video_num_columns = params->video_num_cols;
-       bytes_per_char_h = params->bytes_per_char_h;
+       video_num_lines = params.video_num_rows;
+       video_num_columns = params.video_num_cols;
+       bytes_per_char_h = params.bytes_per_char_h;
        video_size_row = video_num_columns * bytes_per_char_h;
        if (bytes_per_char_h == 4)
                for (i = 0; i < 256; i++)
@@ -140,7 +140,7 @@ static void arch_decomp_setup(void)
                white = 7;
        }
 
-       if (params->nr_pages * params->page_size < 4096*1024) error("<4M of mem\n");
+       if (params.nr_pages * params.page_size < 4096*1024) error("<4M of mem\n");
 }
 #endif
 
index d3ede01ec849649d8f3dfc10bffdcb4d132e5356..96b24052a01d40da721874c0ee71699437d6e0c4 100644 (file)
 #define TASK_SIZE      (0xc0000000UL)
 #define TASK_SIZE_26   (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: = 3GB
  */
diff --git a/include/asm-arm/arch-shark/processor.h b/include/asm-arm/arch-shark/processor.h
deleted file mode 100644 (file)
index bd99869..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * linux/include/asm-arm/arch-ebsa110/processor.h
- *
- * Copyright (C) 1996-1999 Russell King
- *
- * Changelog:
- *  21-Mar-1999        RMK     Added asm/arch/memory.h
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-#include <asm/arch/memory.h>
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index e066821f2e0cd877adf67b99269ebd31f25265c3..e93d0afb176f5ddf5de695be408fa35b5cea05c2 100644 (file)
 #define TASK_SIZE      (0xc0000000UL)
 #define TASK_SIZE_26   (0x04000000UL)
 
+/*
+ * This decides where the kernel will search for a free chunk of vm
+ * space during mmap's.
+ */
+#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
+
 /*
  * Page offset: 3GB
  */
diff --git a/include/asm-arm/arch-tbox/processor.h b/include/asm-arm/arch-tbox/processor.h
deleted file mode 100644 (file)
index 0f8e712..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * linux/include/asm-arm/arch-tbox/processor.h
- *  from linux/include/asm-arm/arch-ebsa110/processor.h
- *
- * Copyright (C) 1996,1997,1998 Russell King
- */
-
-#ifndef __ASM_ARCH_PROCESSOR_H
-#define __ASM_ARCH_PROCESSOR_H
-
-/*
- * Bus types
- */
-#define EISA_bus 0
-#define EISA_bus__is_a_macro /* for versions in ksyms.c */
-#define MCA_bus 0
-#define MCA_bus__is_a_macro /* for versions in ksyms.c */
-
-/* This decides where the kernel will search for a free chunk of vm
- * space during mmap's.
- */
-#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
-
-#endif
index 9773f6749762ea6ebac39d2a99a0be7d7e4ad5cb..9bfe93269b4b78afa8f7a415198009c89bae91b2 100644 (file)
@@ -17,6 +17,9 @@
 
 #ifdef __KERNEL__
 
+#define smp_mb__before_clear_bit()     do { } while (0)
+#define smp_mb__after_clear_bit()      do { } while (0)
+
 /*
  * Function prototypes to keep gcc -Wall happy.
  */
index 4ded5b8f03a703159adc24df7cbb80c44a4e2342..1fd1a5b6504ba961468825435fb64a129b84c1d8 100644 (file)
 
 #include <asm/arch/hardware.h>
 
-#ifdef PARAMS_OFFSET
-#define PARAMS_BASE            ((PAGE_OFFSET) + (PARAMS_OFFSET))
-#else
-#define PARAMS_BASE            0
-#endif
-
 #endif
index 63c1ee9cfc2eaaa786f90ad7bda49ee34e8f5a31..c32ddbc3c28d224606122e254a273ecb6dee5b16 100644 (file)
@@ -3,10 +3,7 @@
 
 #ifdef __KERNEL__
 
-#define pcibios_assign_all_busses()    0
-
-#define PCIBIOS_MIN_IO         0x8000
-#define PCIBIOS_MIN_MEM                0x40000000
+#include <asm/arch/hardware.h>
 
 extern inline void pcibios_set_master(struct pci_dev *dev)
 {
index 5812363788e12dce87c85c0006837250bbbd2e36..43cbb221e0b19a2287ece8928042809ab744eaa5 100644 (file)
@@ -57,7 +57,7 @@ extern uaccess_t uaccess_user, uaccess_kernel;
        uaccess_t       *uaccess;               /* User access functions*/
 
 #define EXTRA_THREAD_STRUCT_INIT               \
-       ,&uaccess_kernel
+       uaccess:        &uaccess_kernel,
 
 #define start_thread(regs,pc,sp)                                       \
 ({                                                                     \
index ab7f31d656f957265e474fc9f05f0dd481310f73..775ebfc55a3b540b1a01ca1e59fbe498a9a2d725 100644 (file)
@@ -41,9 +41,9 @@ struct context_save_struct {
        unsigned int    domain;
 
 #define EXTRA_THREAD_STRUCT_INIT                                       \
-       , domain_val(DOMAIN_USER, DOMAIN_CLIENT) |                      \
-         domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) |                   \
-         domain_val(DOMAIN_IO, DOMAIN_CLIENT)
+       domain:   domain_val(DOMAIN_USER, DOMAIN_CLIENT) |              \
+                 domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) |           \
+                 domain_val(DOMAIN_IO, DOMAIN_CLIENT)
 
 #define start_thread(regs,pc,sp)                                       \
 ({                                                                     \
index d15d5a6ecca74daa696b6ce27462abed5943bd51..190caa1937d5babac3d6b0ca76f008face49a35e 100644 (file)
@@ -10,6 +10,8 @@
 #ifndef __ASM_PROC_PTRACE_H
 #define __ASM_PROC_PTRACE_H
 
+#include <linux/config.h>
+
 #define USR26_MODE     0x00
 #define FIQ26_MODE     0x01
 #define IRQ26_MODE     0x02
@@ -64,8 +66,12 @@ struct pt_regs {
 #define user_mode(regs)        \
        (((regs)->ARM_cpsr & 0xf) == 0)
 
+#ifdef CONFIG_ARM_THUMB
 #define thumb_mode(regs) \
        (((regs)->ARM_cpsr & T_BIT))
+#else
+#define thumb_mode(regs) (0)
+#endif
 
 #define processor_mode(regs) \
        ((regs)->ARM_cpsr & MODE_MASK)
index 247ed3e2bc2eb675b6dc0e413ac7cd829a4b9264..becb31c2d9a8646abf26428a5e243a9463dfe3f0 100644 (file)
 #ifndef __ASM_PROC_SYSTEM_H
 #define __ASM_PROC_SYSTEM_H
 
-extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int size)
-{
-       extern void __bad_xchg(volatile void *, int);
-
-       switch (size) {
-               case 1: __asm__ __volatile__ ("swpb %0, %1, [%2]" : "=r" (x) : "r" (x), "r" (ptr) : "memory");
-                       break;
-               case 4: __asm__ __volatile__ ("swp %0, %1, [%2]" : "=r" (x) : "r" (x), "r" (ptr) : "memory");
-                       break;
-               default: __bad_xchg(ptr, size);
-       }
-       return x;
-}
+#include <linux/config.h>
 
 #define set_cr(x)                                      \
        __asm__ __volatile__(                           \
@@ -131,4 +119,61 @@ extern unsigned long cr_alignment; /* defined in entry-armv.S */
        : "r" (x)                                               \
        : "memory")
 
+#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110)
+/*
+ * On the StrongARM, "swp" is terminally broken since it bypasses the
+ * cache totally.  This means that the cache becomes inconsistent, and,
+ * since we use normal loads/stores as well, this is really bad.
+ * Typically, this causes oopsen in filp_close, but could have other,
+ * more disasterous effects.  There are two work-arounds:
+ *  1. Disable interrupts and emulate the atomic swap
+ *  2. Clean the cache, perform atomic swap, flush the cache
+ *
+ * We choose (1) since its the "easiest" to achieve here and is not
+ * dependent on the processor type.
+ */
+#define swp_is_buggy
+#endif
+
+extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int size)
+{
+       extern void __bad_xchg(volatile void *, int);
+       unsigned long ret;
+#ifdef swp_is_buggy
+       unsigned long flags;
+#endif
+
+       switch (size) {
+#ifdef swp_is_buggy
+               case 1:
+                       __save_flags_cli(flags);
+                       ret = *(volatile unsigned char *)ptr;
+                       *(volatile unsigned char *)ptr = x;
+                       __restore_flags(flags);
+                       break;
+
+               case 4:
+                       __save_flags_cli(flags);
+                       ret = *(volatile unsigned long *)ptr;
+                       *(volatile unsigned long *)ptr = x;
+                       __restore_flags(flags);
+                       break;
+#else
+               case 1: __asm__ __volatile__ ("swpb %0, %1, [%2]"
+                                       : "=r" (ret)
+                                       : "r" (x), "r" (ptr)
+                                       : "memory");
+                       break;
+               case 4: __asm__ __volatile__ ("swp %0, %1, [%2]"
+                                       : "=r" (ret)
+                                       : "r" (x), "r" (ptr)
+                                       : "memory");
+                       break;
+#endif
+               default: __bad_xchg(ptr, size);
+       }
+
+       return ret;
+}
+
 #endif
index cf21f2c1b62b471930a5374543e61fdbce40a9e2..f84c5d2d3f9c404a1f4f3d21953d18e626e2f9ff 100644 (file)
@@ -36,12 +36,12 @@ typedef unsigned long mm_segment_t;         /* domain register      */
 
 #ifdef __KERNEL__
 
-#define NR_DEBUGS      5
+#define EISA_bus 0
+#define MCA_bus 0
 
 #include <asm/atomic.h>
 #include <asm/ptrace.h>
 #include <asm/arch/memory.h>
-#include <asm/arch/processor.h>
 #include <asm/proc/processor.h>
 
 struct debug_info {
@@ -67,18 +67,16 @@ struct thread_struct {
        EXTRA_THREAD_STRUCT
 };
 
-#define INIT_MMAP \
-{ &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, NULL, NULL }
-
-#define INIT_THREAD  {                         \
-       ATOMIC_INIT(1),                         \
-       0,                                      \
-       0,                                      \
-       0,                                      \
-       { { { 0, }, }, },                       \
-       { 0, },                                 \
-       (struct context_save_struct *)0 \
-       EXTRA_THREAD_STRUCT_INIT                \
+#define INIT_MMAP {                                    \
+       vm_mm:          &init_mm,                       \
+       vm_page_prot:   PAGE_SHARED,                    \
+       vm_flags:       VM_READ | VM_WRITE | VM_EXEC,   \
+       vm_avl_height:  1,                              \
+}
+
+#define INIT_THREAD  {                                 \
+       refcount:       ATOMIC_INIT(1),                 \
+       EXTRA_THREAD_STRUCT_INIT                        \
 }
 
 /*
@@ -104,7 +102,6 @@ extern __inline__ void init_thread_css(struct context_save_struct *save)
 
 /* Forward declaration, a strange C thing */
 struct task_struct;
-struct mm_struct;
 
 /* Free all resources held by a thread. */
 extern void release_thread(struct task_struct *);
index a1142be1a8fbb566dac98fe0d39d98f79f5f708f..f19eaed13a60afd24df570d1f04997c2f4b43f39 100644 (file)
@@ -4,7 +4,7 @@
 #ifdef __KERNEL__
 
 #include <linux/config.h>
-#include <linux/linkage.h>
+#include <linux/kernel.h>
 
 /* information about the system we're running on */
 extern unsigned int system_rev;
@@ -64,8 +64,17 @@ extern struct task_struct *__switch_to(struct task_struct *prev, struct task_str
 
 #ifdef CONFIG_SMP
 #error SMP not supported
+
+#define smp_mb()               mb()
+#define smp_rmb()              rmb()
+#define smp_wmb()              wmb()
+
 #else
 
+#define smp_mb()               barrier()
+#define smp_rmb()              barrier()
+#define smp_wmb()              barrier()
+
 #define cli()                  __cli()
 #define sti()                  __sti()
 #define clf()                  __clf()
index cbee6c99803d50dfe0b6adb4d1698ded7b62e1f8..8255e9d60879f4fdcfd840a7481215aaba1d799d 100644 (file)
 #define MCL_CURRENT    1               /* lock all current mappings */
 #define MCL_FUTURE     2               /* lock all future mappings */
 
+#define MADV_NORMAL    0x0             /* default page-in behavior */
+#define MADV_RANDOM    0x1             /* page-in minimum required */
+#define MADV_SEQUENTIAL        0x2             /* read-ahead aggressively */
+#define MADV_WILLNEED  0x3             /* pre-fault pages */
+#define MADV_DONTNEED  0x4             /* discard these pages */
+
 /* compatibility flags */
 #define MAP_ANON       MAP_ANONYMOUS
 #define MAP_FILE       0
diff --git a/include/asm-m68k/parport.h b/include/asm-m68k/parport.h
new file mode 100644 (file)
index 0000000..98a228a
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * parport.h: platform-specific PC-style parport initialisation
+ *
+ * Copyright (C) 1999, 2000  Tim Waugh <tim@cyberelk.demon.co.uk>
+ *
+ * This file should only be included by drivers/parport/parport_pc.c.
+ *
+ * RZ: for use with Q40 and other ISA machines
+ */
+
+#ifndef _ASM_M68K_PARPORT_H
+#define _ASM_M68K_PARPORT_H 1
+
+/* no dma, or IRQ autoprobing */
+static int __devinit parport_pc_find_isa_ports (int autoirq, int autodma);
+static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma)
+{
+        if (! (MACH_IS_Q40))
+         return 0; /* count=0 */
+       return parport_pc_find_isa_ports (PARPORT_IRQ_NONE, PARPORT_DMA_NONE);
+}
+
+#endif /* !(_ASM_M68K_PARPORT_H) */
index 79d81adc2e1e22b9903bc306c9e5dd2bc7f2f38d..1bba1277f9690543da1d72c1c033d5dc7eeda7ef 100644 (file)
@@ -71,6 +71,8 @@ struct thread_struct {
        unsigned short fs;              /* saved fs (sfc, dfc) */
        unsigned long  crp[2];          /* cpu root pointer */
        unsigned long  esp0;            /* points to SR of stack frame */
+       unsigned long  faddr;           /* info about last fault */
+       int            signo, code;
        unsigned long  fp[8*3];
        unsigned long  fpcntl[3];       /* fp control regs */
        unsigned char  fpstate[FPSTATESIZE];  /* floating point state */
@@ -81,7 +83,6 @@ struct thread_struct {
 #define INIT_THREAD  { \
        sizeof(init_stack) + (unsigned long) init_stack, 0, \
        PS_S, __KERNEL_DS, \
-       {0, 0}, 0, {0,}, {0, 0, 0}, {0,}, \
 }
 
 /*
index b7e365b0f65dece53b08900316a994919627b647..dd34c1b93f9836dd307e28cb59ccc308a4d8bb10 100644 (file)
@@ -3,13 +3,14 @@
  * RTC stuff merged for compactnes..
 */
 
-#if 1
+#ifndef _Q40_MASTER_H
+#define _Q40_MASTER_H
+
+#include <asm/io.h>
+
+
 #define q40_master_addr 0xff000000
 #define q40_rtc_addr    0xff021ffc
-#else
-extern unsigned long q40_master_addr;  /* wherever it is mapped ... */
-extern unsigned long q40_rtc_addr;
-#endif
 
 #define IIRQ_REG            0x0       /* internal IRQ reg */
 #define EIRQ_REG            0x4       /* external ... */
@@ -22,7 +23,7 @@ extern unsigned long q40_rtc_addr;
 #define KEYBOARD_UNLOCK_REG 0x20      /* clear kb int */
 
 #define SAMPLE_ENABLE_REG   0x14      /* generate SAMPLE ints */
-#define SAMPLE_RATE_REG     0x28
+#define SAMPLE_RATE_REG     0x2c
 #define SAMPLE_CLEAR_REG    0x28
 #define SAMPLE_LOW          0x00
 #define SAMPLE_HIGH         0x01
@@ -34,9 +35,13 @@ extern unsigned long q40_rtc_addr;
 #endif
 #define EXT_ENABLE_REG      0x10      /* ... rest of the ISA ints ... */
 
+#if 0
 #define master_inb(_reg_)           (*(((unsigned char *)q40_master_addr)+_reg_))
 #define master_outb(_b_,_reg_)      (*(((unsigned char *)q40_master_addr)+_reg_)=(_b_))
-
+#else
+#define master_inb(_reg_)      native_inb((unsigned char *)q40_master_addr+_reg_)
+#define master_outb(_b_,_reg_)  native_outb(_b_,(unsigned char *)q40_master_addr+_reg_)
+#endif
 
 /* define some Q40 specific ints */
 #include "q40ints.h"
@@ -55,21 +60,13 @@ extern unsigned long q40_rtc_addr;
 #define RTC_CTRL        (*(unsigned char *)(Q40_RTC_BASE-28))
 
 
-#if 0
-struct RTC_STRUCT{ 
-  unsigned char bcd_year;
-  unsigned char bcd_mth;
-  unsigned char bcd_dom;
-  unsigned char bcd_dayofweek;
-  unsigned char bcd_hr;
-  unsigned char bcd_min;
-  unsigned char bcd_sec;
-  unsigned char ctrl;
-};
-typedef struct RTC_STRUCT *RtcPtr_t;
-#endif
-
-
 /* some control bits */
 #define RTC_READ   64  /* prepare for reading */
 #define RTC_WRITE  128
+
+
+/* misc defs */
+#define DAC_LEFT  ((unsigned char *)0xff008000)
+#define DAC_RIGHT ((unsigned char *)0xff008004)
+
+#endif /* _Q40_MASTER_H */
index f5e29c982f96711338ce56f0d31fc40dfd5badd6..8aaca406e62ada586ea128745054885045352cd6 100644 (file)
@@ -4,7 +4,7 @@
 
 #define Q40_IRQ_MAX      (34)
 
-#define Q40_IRQ_TIMER    (34)
+#define Q40_IRQ_SAMPLE    (34)
 #define Q40_IRQ_KEYBOARD (32)
 #define Q40_IRQ_FRAME    (33)
 
index 2a5782905d641e58f586fe6de907219f69435aa6..6b48063af642334a5c6e2995aa094aab09a12fef 100644 (file)
@@ -23,8 +23,9 @@ typedef struct siginfo {
 
                /* kill() */
                struct {
-                       pid_t _pid;             /* sender's pid */
-                       uid_t _uid;             /* sender's uid */
+                       __kernel_pid_t _pid;    /* sender's pid */
+                       __kernel_uid_t _uid;    /* backwards compatibility */
+                       __kernel_uid32_t _uid32; /* sender's uid */
                } _kill;
 
                /* POSIX.1b timers */
@@ -35,18 +36,20 @@ typedef struct siginfo {
 
                /* POSIX.1b signals */
                struct {
-                       pid_t _pid;             /* sender's pid */
-                       uid_t _uid;             /* sender's uid */
+                       __kernel_pid_t _pid;    /* sender's pid */
+                       __kernel_uid_t _uid;    /* backwards compatibility */
                        sigval_t _sigval;
+                       __kernel_uid32_t _uid32; /* sender's uid */
                } _rt;
 
                /* SIGCHLD */
                struct {
-                       pid_t _pid;             /* which child */
-                       uid_t _uid;             /* sender's uid */
+                       __kernel_pid_t _pid;    /* which child */
+                       __kernel_uid_t _uid;    /* backwards compatibility */
                        int _status;            /* exit code */
                        clock_t _utime;
                        clock_t _stime;
+                       __kernel_uid32_t _uid32; /* sender's uid */
                } _sigchld;
 
                /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
@@ -62,11 +65,18 @@ typedef struct siginfo {
        } _sifields;
 } siginfo_t;
 
+#define UID16_SIGINFO_COMPAT_NEEDED
+
 /*
  * How these fields are to be accessed.
  */
 #define si_pid         _sifields._kill._pid
+#ifdef __KERNEL__
+#define si_uid         _sifields._kill._uid32
+#define si_uid16       _sifields._kill._uid
+#else
 #define si_uid         _sifields._kill._uid
+#endif /* __KERNEL__ */
 #define si_status      _sifields._sigchld._status
 #define si_utime       _sifields._sigchld._utime
 #define si_stime       _sifields._sigchld._stime
index 9b88477aa78597fad66aef25abe6d452c22e0b38..4c43eb814a22e864beee63a5987ea0fa8e3e9513 100644 (file)
@@ -80,7 +80,7 @@
 #define __NR_sigpending                 73
 #define __NR_sethostname        74
 #define __NR_setrlimit          75
-#define __NR_old_getrlimit      76
+#define __NR_getrlimit          76
 #define __NR_getrusage          77
 #define __NR_gettimeofday       78
 #define __NR_settimeofday       79
 #define __NR_mremap            163
 #define __NR_setresuid         164
 #define __NR_getresuid         165
+#define __NR_getpagesize       166
 #define __NR_query_module      167
 #define __NR_poll              168
 #define __NR_nfsservctl                169
 #define __NR_getpmsg           188     /* some people actually want streams */
 #define __NR_putpmsg           189     /* some people actually want streams */
 #define __NR_vfork             190
-#define __NR_getrlimit         191
+#define __NR_ugetrlimit                191
 #define __NR_mmap2             192
 #define __NR_truncate64                193
 #define __NR_ftruncate64       194
index 9cac7759ace197f2c9eb7edde15169bc915b8d0b..8c8b1f74f2354f5b54d62344ee10aa06c8eff01a 100644 (file)
@@ -13,7 +13,6 @@ extern struct page *highmem_start_page;
 /* declarations for linux/mm/highmem.c */
 FASTCALL(unsigned int nr_free_highpages(void));
 
-extern struct page * prepare_highmem_swapout(struct page *);
 extern struct page * replace_with_highmem(struct page *);
 extern struct buffer_head * create_bounce(int rw, struct buffer_head * bh_orig);
 
@@ -31,7 +30,6 @@ static inline void bh_kunmap(struct buffer_head *bh)
 #else /* CONFIG_HIGHMEM */
 
 static inline unsigned int nr_free_highpages(void) { return 0; }
-#define prepare_highmem_swapout(page) page
 #define replace_with_highmem(page) page
 
 static inline void *kmap(struct page *page) { return page_address(page); }
index 51c06aec7cb4bb100ffe72a6b50debdf1820f11b..23cf7ed736261aad68d7f45cba0bf6026f5d321c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdn.h,v 1.110 2000/11/01 17:54:01 detabc Exp $
+/* $Id: isdn.h,v 1.111 2000/11/25 17:01:02 kai Exp $
 
  * Main header for the Linux ISDN subsystem (linklevel).
  *
@@ -684,10 +684,8 @@ typedef struct isdn_devt {
 extern isdn_dev *dev;
 
 
-
 /* Utility-Macros */
 #define MIN(a,b) ((a<b)?a:b)
 #define MAX(a,b) ((a>b)?a:b)
-
 #endif /* __KERNEL__ */
 #endif /* isdn_h */
index 15ebaffcba9d2355c730bd051e28948fb16a9f37..1d5d4f85b7dd9ac041b2d8116e4188cd26b1835e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: isdnif.h,v 1.35 2000/06/16 13:19:38 keil Exp $
+/* $Id: isdnif.h,v 1.37 2000/11/19 17:01:54 kai Exp $
 
  * Linux ISDN subsystem
  *
@@ -53,6 +53,7 @@
 #define ISDN_PROTO_L2_V11038 9   /* V.110 bitrate adaption 38400 Baud */
 #define ISDN_PROTO_L2_MODEM  10  /* Analog Modem on Board */
 #define ISDN_PROTO_L2_FAX    11  /* Fax Group 2/3         */
+#define ISDN_PROTO_L2_HDLC_56K 12   /* HDLC 56k                          */
 #define ISDN_PROTO_L2_MAX    15  /* Max. 16 Protocols                 */
 
 /*
@@ -253,6 +254,7 @@ typedef struct
 #define ISDN_FEATURE_L2_V11038  (0x0001 << ISDN_PROTO_L2_V11038)
 #define ISDN_FEATURE_L2_MODEM   (0x0001 << ISDN_PROTO_L2_MODEM)
 #define ISDN_FEATURE_L2_FAX    (0x0001 << ISDN_PROTO_L2_FAX)
+#define ISDN_FEATURE_L2_HDLC_56K (0x0001 << ISDN_PROTO_L2_HDLC_56K)
 
 #define ISDN_FEATURE_L2_MASK    (0x0FFFF) /* Max. 16 protocols */
 #define ISDN_FEATURE_L2_SHIFT   (0)
index 471c9af2c202de316910c22d50e9b384c99df100..e664eed06a866871de3b83ff377527e2f02fcb37 100644 (file)
@@ -185,8 +185,6 @@ int get_joliet_filename(struct iso_directory_record *, unsigned char *, struct i
 int get_acorn_filename(struct iso_directory_record *, char *, struct inode *);
 
 extern struct dentry *isofs_lookup(struct inode *, struct dentry *);
-extern int isofs_get_block(struct inode *, long, struct buffer_head *, int);
-extern int isofs_bmap(struct inode *, int);
 extern struct buffer_head *isofs_bread(struct inode *, unsigned int, unsigned int);
 
 extern struct inode_operations isofs_dir_inode_operations;
index 332cabf7e4f65b6f1fe50faa902462a6c7f596f0..3dfb6443512c99d3a7430fcc4f6b3c98848ecb5f 100644 (file)
@@ -290,13 +290,19 @@ static __inline__ void *fb_memclear_small(void *s, size_t count)
       "1: lsrl   #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"
       "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"
       "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"
-      "1: subql  #1,%1 ; jcs 3f\n\t"
-      "2: moveml %2/%3/%4/%5,%0@-\n\t"
+      "1:"
+         : "=a" (s), "=d" (count)
+         : "d" (0), "0" ((char *)s+count), "1" (count)
+   );
+   __asm__ __volatile__(
+         "subql  #1,%1 ; jcs 3f\n\t"
+        "movel %2,%%d4; movel %2,%%d5; movel %2,%%d6\n\t"
+      "2: moveml %2/%%d4/%%d5/%%d6,%0@-\n\t"
          "dbra %1,2b\n\t"
       "3:"
          : "=a" (s), "=d" (count)
-         :  "d" (0), "d" (0), "d" (0), "d" (0),
-            "0" ((char *)s+count), "1" (count)
+         : "d" (0), "0" (s), "1" (count)
+        : "d4", "d5", "d6"
   );
 
    return(0);
@@ -355,13 +361,19 @@ static __inline__ void *fb_memset255(void *s, size_t count)
       "1: lsrl   #1,%1 ; jcc 1f ; movew %2,%0@-\n\t"
       "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@-\n\t"
       "1: lsrl   #1,%1 ; jcc 1f ; movel %2,%0@- ; movel %2,%0@-\n\t"
-      "1: subql  #1,%1 ; jcs 3f\n\t"
-      "2: moveml %2/%3/%4/%5,%0@-\n\t"
+      "1:"
+         : "=a" (s), "=d" (count)
+         : "d" (-1), "0" ((char *)s+count), "1" (count)
+   );
+   __asm__ __volatile__(
+         "subql  #1,%1 ; jcs 3f\n\t"
+        "movel %2,%%d4; movel %2,%%d5; movel %2,%%d6\n\t"
+      "2: moveml %2/%%d4/%%d5/%%d6,%0@-\n\t"
          "dbra %1,2b\n\t"
       "3:"
          : "=a" (s), "=d" (count)
-         :  "d" (-1), "d" (-1), "d" (-1), "d" (-1),
-            "0" ((char *) s + count), "1" (count)
+         : "d" (-1), "0" (s), "1" (count)
+        : "d4", "d5", "d6"
   );
 
    return(0);
index f7486444bfd6d1dfe29049fd6522a2a77b08e86b..f933d2923ccc4e56dd6e314752ea7d905273a44f 100644 (file)
@@ -254,7 +254,9 @@ static struct dev_name_struct {
        { "ida/c0d14p",0x48E0 },
        { "ida/c0d15p",0x48F0 },
 #endif
-
+#ifdef CONFIG_NFTL
+       { "nftla", 0x5d00 },
+#endif
        { NULL, 0 }
 };
 
index c4607fd5e3ac8f68fa76ac03b5886e8a2a9c254e..9164664d555af352fba3d3ae4030d49a0b2d3838 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -1484,8 +1484,6 @@ static int shm_swap_core(struct shmid_kernel *shp, unsigned long idx, swp_entry_
                return RETRY;
 
        lock_page(page_map);
-       if (!(page_map = prepare_highmem_swapout(page_map)))
-               return FAILED;
        SHM_ENTRY (shp, idx) = swp_entry_to_pte(swap_entry);
 
        /* add the locked page to the swap cache before allowing
index e89149de9a3c7381a6fdfdedb0d463c728eb44ba..889025caf6c2ac2ef8c9a99d8b7ea7f52a5b2ed1 100644 (file)
@@ -100,7 +100,8 @@ void inter_module_register(const char *im_name, struct module *owner, const void
                        spin_unlock(&ime_lock);
                        kfree(ime_new);
                        /* Program logic error, fatal */
-                       panic("inter_module_register: duplicate im_name '%s'", im_name);
+                       printk(KERN_ERR "inter_module_register: duplicate im_name '%s'", im_name);
+                       BUG();
                }
        }
        list_add(&(ime_new->list), &ime_list);
@@ -140,7 +141,8 @@ void inter_module_unregister(const char *im_name)
        }
        else {
                /* Program logic error, fatal */
-               panic("inter_module_unregister: no entry for '%s'", im_name);
+               printk(KERN_ERR "inter_module_unregister: no entry for '%s'", im_name);
+               BUG();
        }
 }
 
@@ -211,7 +213,8 @@ void inter_module_put(const char *im_name)
                }
        }
        spin_unlock(&ime_lock);
-       panic("inter_module_put: no entry for '%s'", im_name);
+       printk(KERN_ERR "inter_module_put: no entry for '%s'", im_name);
+       BUG();
 }
 
 
index 5e8ebde4bad4e8b3f372bbcfbc10ab28b229277c..ac8f69e6306f27fe7149055366e2f5cff507516e 100644 (file)
 #include <linux/swap.h>
 #include <linux/slab.h>
 
-/*
- * Take one locked page, return another low-memory locked page.
- */
-struct page * prepare_highmem_swapout(struct page * page)
-{
-       struct page *new_page;
-       unsigned long regular_page;
-
-       /*
-        * If this is a highmem page so it can't be swapped out directly
-        * otherwise the b_data buffer addresses will break
-        * the lowlevel device drivers.
-        */
-       if (!PageHighMem(page))
-               return page;
-
-       /*
-        * Here we break the page lock, and we split the
-        * dirty page into two. We can unlock the old page,
-        * and we'll now have two of them. Too bad, it would
-        * have been nice to continue to potentially share
-        * across a fork().
-        */
-       UnlockPage(page);
-       regular_page = __get_free_page(GFP_ATOMIC);
-       if (!regular_page)
-               return NULL;
-
-       copy_page((void *)regular_page, kmap(page));
-       kunmap(page);
-
-       /*
-        * ok, we can just forget about our highmem page since 
-        * we stored its data into the new regular_page.
-        */
-       page_cache_release(page);
-       new_page = virt_to_page(regular_page);
-       LockPage(new_page);
-       return new_page;
-}
-
 struct page * replace_with_highmem(struct page * page)
 {
        struct page *highpage;
index 3a91d955e97327cfdb4355fc35bcf63cbb24067f..94a40874059ffdd9a07409f22a7e603aed608957 100644 (file)
 
 #include <asm/pgtable.h>
 
+static int swap_writepage(struct file *file, struct page *page)
+{
+       rw_swap_page(WRITE, page, 0);
+       return 0;
+}
+
 static struct address_space_operations swap_aops = {
-       sync_page: block_sync_page
+       writepage: swap_writepage,
+       sync_page: block_sync_page,
 };
 
 struct address_space swapper_space = {
@@ -106,6 +113,7 @@ void delete_from_swap_cache_nolock(struct page *page)
                lru_cache_del(page);
 
        spin_lock(&pagecache_lock);
+       ClearPageDirty(page);
        __delete_from_swap_cache(page);
        spin_unlock(&pagecache_lock);
        page_cache_release(page);
index dd92afeccd64010a9f5411dd10d8be27aee5228d..c5b2d289d312045136c06a5f95141781c47b49d2 100644 (file)
@@ -91,6 +91,7 @@ static int try_to_swap_out(struct mm_struct * mm, struct vm_area_struct* vma, un
         */
        if (PageSwapCache(page)) {
                entry.val = page->index;
+set_swap_pte:
                swap_duplicate(entry);
                set_pte(page_table, swp_entry_to_pte(entry));
 drop_pte:
@@ -99,7 +100,8 @@ drop_pte:
                flush_tlb_page(vma, address);
                deactivate_page(page);
                page_cache_release(page);
-               goto out_failed;
+out_failed:
+               return 0;
        }
 
        /*
@@ -185,31 +187,14 @@ drop_pte:
        if (!entry.val)
                goto out_unlock_restore; /* No swap space left */
 
-       /* Make sure to flush the TLB _before_ we start copying things.. */
-       flush_tlb_page(vma, address);
-       if (!(page = prepare_highmem_swapout(page)))
-               goto out_swap_free;
-
-       swap_duplicate(entry);  /* One for the process, one for the swap cache */
-
-       /* Add it to the swap cache */
+       /* Add it to the swap cache and mark it dirty */
        add_to_swap_cache(page, entry);
-
-       /* Put the swap entry into the pte after the page is in swapcache */
-       mm->rss--;
-       set_pte(page_table, swp_entry_to_pte(entry));
-       spin_unlock(&mm->page_table_lock);
-
-       /* OK, do a physical asynchronous write to swap.  */
-       rw_swap_page(WRITE, page, 0);
-       deactivate_page(page);
+       SetPageDirty(page);
+       goto set_swap_pte;
 
 out_free_success:
        page_cache_release(page);
        return 1;
-out_swap_free:
-       set_pte(page_table, pte);
-       swap_free(entry);
 out_failed:
        return 0;
 out_unlock_restore:
@@ -615,6 +600,35 @@ dirty_page_rescan:
                        continue;
                }
 
+               /*
+                * Dirty swap-cache page? Write it out if
+                * last copy..
+                */
+               if (PageDirty(page)) {
+                       int (*writepage)(struct file *, struct page *) = page->mapping->a_ops->writepage;
+                       if (!writepage)
+                               goto page_active;
+
+                       /* Can't start IO? Move it to the back of the list */
+                       if (!can_get_io_locks) {
+                               list_del(page_lru);
+                               list_add(page_lru, &inactive_dirty_list);
+                               UnlockPage(page);
+                               continue;
+                       }
+
+                       /* OK, do a physical asynchronous write to swap.  */
+                       ClearPageDirty(page);
+                       page_cache_get(page);
+                       spin_unlock(&pagemap_lru_lock);
+
+                       writepage(NULL, page);
+                       page_cache_release(page);
+
+                       /* And re-start the thing.. */
+                       goto dirty_page_rescan;
+               }
+
                /*
                 * If the page has buffers, try to free the buffer mappings
                 * associated with this page. If we succeed we either free
@@ -701,6 +715,7 @@ dirty_page_rescan:
                        UnlockPage(page);
                        cleaned_pages++;
                } else {
+page_active:
                        /*
                         * OK, we don't know what to do with the page.
                         * It's no use keeping it here, so we move it to