diff options
| author | Patrick Mochel <mochel@osdl.org> | 2003-01-03 00:18:49 -0600 |
|---|---|---|
| committer | Patrick Mochel <mochel@osdl.org> | 2003-01-03 00:18:49 -0600 |
| commit | 6223578142a8216a64063d22903ae215d885fb32 (patch) | |
| tree | 94ee3c75be8253e09ca1e0324da851a0cfe8132e | |
| parent | 5816344d714eaf45f2305ac2215894e41c4fd297 (diff) | |
| parent | e4d188bb04361ae4c1f2a51db1f76a316ea5b31c (diff) | |
Merge bk://linux.bkbits.net/linux-2.5
into osdl.org:/home/mochel/src/kernel/devel/linux-2.5-virgin
132 files changed, 2916 insertions, 3304 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 33175c774128..e01bb0f3cfd0 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -7,9 +7,8 @@ config ALPHA default y help The Alpha is a 64-bit general-purpose processor designed and - marketed by the Digital Equipment Corporation of blessed memory, now - Compaq. Alpha Linux dates from 1995-1996 and was the first non-x86 - port. The Alpha Linux project has a home page at + marketed by the Digital Equipment Corporation of blessed memory, + now Hewlett-Packard. The Alpha Linux project has a home page at <http://www.alphalinux.org/>. config MMU @@ -42,9 +41,6 @@ menu "System setup" choice prompt "Alpha system type" default ALPHA_GENERIC - -config ALPHA_GENERIC - bool "Generic" ---help--- This is the system type of your hardware. A "generic" kernel will run on any supported Alpha system. However, if you configure a @@ -84,6 +80,11 @@ config ALPHA_GENERIC If you don't know what to do, choose "generic". +config ALPHA_GENERIC + bool "Generic" + help + A generic kernel will run on all supported Alpha hardware. + config ALPHA_ALCOR bool "Alcor/Alpha-XLT" help @@ -810,47 +811,6 @@ source "drivers/ieee1394/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "drivers/isdn/Kconfig" diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile index 5730945a1922..79f400d4888f 100644 --- a/arch/alpha/Makefile +++ b/arch/alpha/Makefile @@ -10,13 +10,17 @@ NM := $(NM) -B -LDFLAGS_vmlinux = -static -N #-relax -CFLAGS := $(CFLAGS) -pipe -mno-fp-regs -ffixed-8 -LDFLAGS_BLOB := --format binary --oformat elf64-alpha +LDFLAGS_vmlinux := -static -N #-relax +LDFLAGS_BLOB := --format binary --oformat elf64-alpha +cflags-y := -pipe -mno-fp-regs -ffixed-8 # Determine if we can use the BWX instructions with GAS. old_gas := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi) +ifeq ($(old_gas),y) +$(error The assembler '$(AS)' does not support the BWX instruction) +endif + # Determine if GCC understands the -mcpu= option. have_mcpu := $(shell if $(CC) -mcpu=ev5 -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo y; else echo n; fi) @@ -27,68 +31,64 @@ have_mcpu_ev6 := $(shell if $(CC) -mcpu=ev6 -S -o /dev/null -xc /dev/null > /dev have_mcpu_ev67 := $(shell if $(CC) -mcpu=ev67 -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo y; else echo n; fi) have_msmall_data := $(shell if $(CC) -msmall-data -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo y; else echo n; fi) -ifeq ($(have_msmall_data),y) - CFLAGS := $(CFLAGS) -msmall-data -endif + +cflags-$(have_msmall_data) += -msmall-data # Turn on the proper cpu optimizations. ifeq ($(have_mcpu),y) + mcpu_done := n # If GENERIC, make sure to turn off any instruction set extensions that # the host compiler might have on by default. Given that EV4 and EV5 # have the same instruction set, prefer EV5 because an EV5 schedule is # more likely to keep an EV4 processor busy than vice-versa. - mcpu_done := n ifeq ($(CONFIG_ALPHA_GENERIC),y) - CFLAGS := $(CFLAGS) -mcpu=ev5 + mcpu := ev5 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_SX164)$(have_mcpu_pca56),nyy) - CFLAGS := $(CFLAGS) -mcpu=pca56 + mcpu := pca56 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_POLARIS)$(have_mcpu_pca56),nyy) - CFLAGS := $(CFLAGS) -mcpu=pca56 + mcpu := pca56 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV4),ny) - CFLAGS := $(CFLAGS) -mcpu=ev4 + mcpu := ev4 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV56),ny) - CFLAGS := $(CFLAGS) -mcpu=ev56 + mcpu := ev56 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV5),ny) - CFLAGS := $(CFLAGS) -mcpu=ev5 + mcpu := ev5 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV67)$(have_mcpu_ev67),nyy) - CFLAGS := $(CFLAGS) -mcpu=ev67 + mcpu := ev67 mcpu_done := y endif ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV6),ny) ifeq ($(have_mcpu_ev6),y) - CFLAGS := $(CFLAGS) -mcpu=ev6 + mcpu := ev6 else ifeq ($(have_mcpu_pca56),y) - CFLAGS := $(CFLAGS) -mcpu=pca56 + mcpu := pca56 else - CFLAGS := $(CFLAGS) -mcpu=ev56 + mcpu=ev56 endif endif mcpu_done := y endif + cflags-$(mcpu_done) += -mcpu=$(mcpu) endif + # For TSUNAMI, we must have the assembler not emulate our instructions. # The same is true for IRONGATE, POLARIS, PYXIS. # BWX is most important, but we don't really want any emulation ever. - -ifeq ($(old_gas),y) - # How do we do #error in make? - CFLAGS := --error-please-upgrade-your-assembler -endif -CFLAGS := $(CFLAGS) -Wa,-mev6 +CFLAGS += $(cflags-y) -Wa,-mev6 HEAD := arch/alpha/kernel/head.o @@ -96,37 +96,16 @@ core-y += arch/alpha/kernel/ arch/alpha/mm/ core-$(CONFIG_MATHEMU) += arch/alpha/math-emu/ libs-y += arch/alpha/lib/ -export libs-y - -MAKEBOOT = $(MAKE) -C arch/alpha/boot +boot := arch/alpha/boot -rawboot: vmlinux - @$(MAKEBOOT) rawboot +#Default target when executing make with no arguments +all boot: $(boot)/vmlinux.gz -boot: vmlinux - @$(MAKEBOOT) +$(boot)/vmlinux.gz: vmlinux + $(Q)$(MAKE) -f scripts/Makefile.build obj=$(boot) $@ -# -# My boot writes directly to a specific disk partition, I doubt most -# people will want to do that without changes.. -# -msb my-special-boot: vmlinux - @$(MAKEBOOT) msb - -bootimage: vmlinux - @$(MAKEBOOT) bootimage - -srmboot: vmlinux - @$(MAKEBOOT) srmboot - -archclean: - @$(MAKEBOOT) clean - -archmrproper: - rm -f include/asm-alpha/asm_offsets.h - -bootpfile: vmlinux - @$(MAKEBOOT) bootpfile +bootimage bootpfile: vmlinux + $(Q)$(MAKE) -f scripts/Makefile.build obj=$(boot) $(boot)/$@ prepare: include/asm-$(ARCH)/asm_offsets.h @@ -134,12 +113,19 @@ prepare: include/asm-$(ARCH)/asm_offsets.h arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ include/config/MARKER -include/asm-$(ARCH)/asm_offsets.h.tmp: arch/$(ARCH)/kernel/asm-offsets.s - @$(generate-asm-offsets.h) < $< > $@ - -include/asm-$(ARCH)/asm_offsets.h: include/asm-$(ARCH)/asm_offsets.h.tmp +include/asm-$(ARCH)/asm_offsets.h: arch/$(ARCH)/kernel/asm-offsets.s @echo -n ' Generating $@' + @$(generate-asm-offsets.h) < $< > $@.tmp @$(update-if-changed) +archclean: + $(Q)$(MAKE) -f scripts/Makefile.clean obj=$(boot) + CLEAN_FILES += include/asm-$(ARCH)/offset.h.tmp \ include/asm-$(ARCH)/offset.h + +define archhelp + echo '* boot - Compressed kernel image (arch/alpha/boot/vmlinux.gz)' + echo ' bootimage - SRM bootable image (arch/alpha/boot/bootimage)' + echo ' bootpfile - BOOTP bootable image (arch/alpha/boot/bootpfile)' +endef diff --git a/arch/alpha/boot/Makefile b/arch/alpha/boot/Makefile index 8ea7df0b78a2..ff36b472038b 100644 --- a/arch/alpha/boot/Makefile +++ b/arch/alpha/boot/Makefile @@ -8,58 +8,35 @@ # Copyright (C) 1994 by Linus Torvalds # -LINKFLAGS = -static -T bootloader.lds -uvsprintf #-N -relax - -CFLAGS := $(CFLAGS) -I$(TOPDIR)/include - -.S.s: - $(CPP) $(AFLAGS) -traditional -o $*.o $< -.S.o: - $(CC) $(AFLAGS) -traditional -c -o $*.o $< - -OBJECTS = head.o main.o -BPOBJECTS = head.o bootp.o -TARGETS = vmlinux.gz tools/objstrip # also needed by aboot & milo -VMLINUX = $(TOPDIR)/vmlinux -OBJSTRIP = tools/objstrip -LIBS := $(addprefix $(TOPDIR)/,$(libs-y)) - -all: $(TARGETS) - @echo Ready to install kernel in $(shell pwd)/vmlinux.gz - -# normally no need to build these: -rawboot: vmlinux.nh tools/lxboot tools/bootlx - -msb: tools/lxboot tools/bootlx vmlinux.nh - ( cat tools/lxboot tools/bootlx vmlinux.nh ) > /dev/rz0a - disklabel -rw rz0 'linux' tools/lxboot tools/bootlx - -bootimage: tools/mkbb tools/lxboot tools/bootlx vmlinux.nh - ( cat tools/lxboot tools/bootlx vmlinux.nh ) > bootimage - tools/mkbb bootimage tools/lxboot - -bootpfile: tools/bootph vmlinux.nh - cat tools/bootph vmlinux.nh > bootpfile +host-progs := tools/mkbb tools/objstrip +EXTRA_TARGETS := vmlinux.gz vmlinux \ + vmlinux.nh tools/lxboot tools/bootlx tools/bootph \ + bootloader bootpheader +OBJSTRIP := $(obj)/tools/objstrip + +# SRM bootable image. Copy to offset 512 of a partition. +$(obj)/bootimage: $(addprefix $(obj)/tools/,mkbb lxboot bootlx) $(obj)/vmlinux.nh + ( cat $(obj)/tools/lxboot $(obj)/tools/bootlx $(obj)/vmlinux.nh ) > $@ + $(obj)/tools/mkbb $@ $(obj)/tools/lxboot + @echo ' Bootimage $@ is ready' + +# BOOTP bootable image. Define INITRD during make to append initrd image. +$(obj)/bootpfile: $(obj)/tools/bootph $(obj)/vmlinux.nh + cat $(obj)/tools/bootph $(obj)/vmlinux.nh > $@ ifdef INITRD - cat $(INITRD) >> bootpfile + cat $(INITRD) >> $@ endif -srmboot: bootdevice bootimage - dd if=bootimage of=$(BOOTDEV) bs=512 seek=1 skip=1 - tools/mkbb $(BOOTDEV) tools/lxboot - -bootdevice: - @test "$(BOOTDEV)" != "" || (echo You must specify BOOTDEV ; exit -1) - -vmlinux.gz: vmlinux - gzip -fv9 vmlinux +# Compressed kernel image +$(obj)/vmlinux.gz: $(obj)/vmlinux FORCE + $(call if_changed,gzip) + @echo ' Kernel $@ is ready' -main.o: ksize.h +$(obj)/main.o: $(obj)/ksize.h +$(obj)/bootp.o: $(obj)/ksize.h -bootp.o: ksize.h - -ksize.h: vmlinux.nh FORCE - echo "#define KERNEL_SIZE `ls -l vmlinux.nh | awk '{print $$5}'`" > $@T +$(obj)/ksize.h: $(obj)/vmlinux.nh FORCE + echo "#define KERNEL_SIZE `ls -l $(obj)/vmlinux.nh | awk '{print $$5}'`" > $@T ifdef INITRD [ -f $(INITRD) ] || exit 1 echo "#define INITRD_IMAGE_SIZE `ls -l $(INITRD) | awk '{print $$5}'`" >> $@T @@ -67,36 +44,36 @@ endif cmp -s $@T $@ || mv -f $@T $@ rm -f $@T -vmlinux.nh: $(VMLINUX) $(OBJSTRIP) - $(OBJSTRIP) -v $(VMLINUX) vmlinux.nh - -vmlinux: $(TOPDIR)/vmlinux - $(STRIP) -o vmlinux $(VMLINUX) - -tools/lxboot: $(OBJSTRIP) bootloader - $(OBJSTRIP) -p bootloader tools/lxboot +quiet_cmd_strip = STRIP $@ + cmd_strip = $(STRIP) -o $@ $< +$(obj)/vmlinux: vmlinux FORCE + $(call if_changed,strip) -tools/bootlx: bootloader $(OBJSTRIP) - $(OBJSTRIP) -vb bootloader tools/bootlx +quiet_cmd_objstrip = OBJSTRIP $@ + cmd_objstrip = $(OBJSTRIP) $(OSFLAGS_$(@F)) $< $@ -tools/bootph: bootpheader $(OBJSTRIP) - $(OBJSTRIP) -vb bootpheader tools/bootph +OSFLAGS_vmlinux.nh := -v +OSFLAGS_lxboot := -p +OSFLAGS_bootlx := -vb +OSFLAGS_bootph := -vb -$(OBJSTRIP): $(OBJSTRIP).c - $(HOSTCC) $(HOSTCFLAGS) $< -o $@ +$(obj)/vmlinux.nh: vmlinux $(OBJSTRIP) FORCE + $(call if_changed,objstrip) + +$(obj)/tools/lxboot: $(obj)/bootloader $(OBJSTRIP) FORCE + $(call if_changed,objstrip) -tools/mkbb: tools/mkbb.c - $(HOSTCC) tools/mkbb.c -o tools/mkbb +$(obj)/tools/bootlx: $(obj)/bootloader $(OBJSTRIP) FORCE + $(call if_changed,objstrip) -bootloader: $(OBJECTS) - $(LD) $(LINKFLAGS) $(OBJECTS) $(LIBS) -o bootloader +$(obj)/tools/bootph: $(obj)/bootpheader $(OBJSTRIP) FORCE + $(call if_changed,objstrip) -bootpheader: $(BPOBJECTS) - $(LD) $(LINKFLAGS) $(BPOBJECTS) $(LIBS) -o bootpheader +LDFLAGS_bootloader := -static -uvsprintf -T #-N -relax +LDFLAGS_bootpheader := -static -uvsprintf -T #-N -relax -clean: - rm -f $(TARGETS) bootloader bootimage bootpfile bootpheader - rm -f tools/mkbb tools/bootlx tools/lxboot tools/bootph - rm -f vmlinux.nh ksize.h +$(obj)/bootloader: $(obj)/bootloader.lds $(obj)/head.o $(obj)/main.o FORCE + $(call if_changed,ld) -FORCE: +$(obj)/bootpheader: $(obj)/bootloader.lds $(obj)/head.o $(obj)/bootp.o FORCE + $(call if_changed,ld) diff --git a/arch/alpha/kernel/Makefile b/arch/alpha/kernel/Makefile index 0c41f049a770..b22cbaeae0b8 100644 --- a/arch/alpha/kernel/Makefile +++ b/arch/alpha/kernel/Makefile @@ -12,83 +12,77 @@ obj-y := entry.o traps.o process.o init_task.o osf_sys.o irq.o \ irq_alpha.o signal.o setup.o ptrace.o time.o semaphore.o \ alpha_ksyms.o systbls.o err_common.o -# -# FIXME! -# These should be made conditional on the stuff that needs them! -# -obj-y += irq_i8259.o irq_srm.o \ - es1888.o smc37c669.o smc37c93x.o ns87312.o - -ifdef CONFIG_VGA_HOSE -obj-y += console.o -endif - -obj-$(CONFIG_SMP) += smp.o -obj-$(CONFIG_PCI) += pci.o pci_iommu.o +obj-$(CONFIG_VGA_HOSE) += console.o +obj-$(CONFIG_SMP) += smp.o +obj-$(CONFIG_PCI) += pci.o pci_iommu.o obj-$(CONFIG_SRM_ENV) += srm_env.o ifdef CONFIG_ALPHA_GENERIC -obj-y += core_apecs.o core_cia.o core_irongate.o core_lca.o core_mcpcia.o \ - core_polaris.o core_t2.o core_tsunami.o core_titan.o \ - sys_alcor.o sys_cabriolet.o sys_dp264.o sys_eb64p.o sys_eiger.o \ +obj-y += core_apecs.o core_cia.o core_irongate.o core_lca.o \ + core_mcpcia.o core_polaris.o core_t2.o core_tsunami.o \ + core_titan.o core_wildfire.o + +obj-y += sys_alcor.o sys_cabriolet.o sys_dp264.o sys_eb64p.o sys_eiger.o \ sys_jensen.o sys_miata.o sys_mikasa.o sys_nautilus.o sys_titan.o \ sys_noritake.o sys_rawhide.o sys_ruffian.o sys_rx164.o \ sys_sable.o sys_sio.o sys_sx164.o sys_takara.o \ - sys_wildfire.o core_wildfire.o irq_pyxis.o + sys_wildfire.o + +obj-y += irq_pyxis.o irq_i8259.o irq_srm.o + +obj-y += es1888.o smc37c669.o smc37c93x.o ns87312.o else # Core logic support -obj-$(CONFIG_ALPHA_APECS) += core_apecs.o -obj-$(CONFIG_ALPHA_CIA) += core_cia.o - -obj-$(CONFIG_ALPHA_IRONGATE) += core_irongate.o -obj-$(CONFIG_ALPHA_LCA) += core_lca.o -obj-$(CONFIG_ALPHA_MCPCIA) += core_mcpcia.o -obj-$(CONFIG_ALPHA_T2) += core_t2.o -obj-$(CONFIG_ALPHA_TSUNAMI) += core_tsunami.o -obj-$(CONFIG_ALPHA_TITAN) += core_titan.o -obj-$(CONFIG_ALPHA_POLARIS) += core_polaris.o -obj-$(CONFIG_ALPHA_WILDFIRE) += core_wildfire.o +obj-$(CONFIG_ALPHA_APECS) += core_apecs.o +obj-$(CONFIG_ALPHA_CIA) += core_cia.o +obj-$(CONFIG_ALPHA_IRONGATE) += core_irongate.o +obj-$(CONFIG_ALPHA_LCA) += core_lca.o +obj-$(CONFIG_ALPHA_MCPCIA) += core_mcpcia.o +obj-$(CONFIG_ALPHA_POLARIS) += core_polaris.o +obj-$(CONFIG_ALPHA_T2) += core_t2.o +obj-$(CONFIG_ALPHA_TSUNAMI) += core_tsunami.o +obj-$(CONFIG_ALPHA_TITAN) += core_titan.o +obj-$(CONFIG_ALPHA_WILDFIRE) += core_wildfire.o # Board support -ifneq ($(CONFIG_ALPHA_ALCOR)$(CONFIG_ALPHA_XLT),) -obj-y += sys_alcor.o -endif -ifneq ($(CONFIG_ALPHA_CABRIOLET)$(CONFIG_ALPHA_EB164)$(CONFIG_ALPHA_EB66P)$(CONFIG_ALPHA_LX164)$(CONFIG_ALPHA_PC164),) -obj-y += sys_cabriolet.o -endif - -obj-$(CONFIG_ALPHA_DP264) += sys_dp264.o -obj-$(CONFIG_ALPHA_SHARK) += sys_dp264.o -obj-$(CONFIG_ALPHA_TITAN) += sys_titan.o - -ifneq ($(CONFIG_ALPHA_EB64P)$(CONFIG_ALPHA_EB66),) -obj-y += sys_eb64p.o -endif - -obj-$(CONFIG_ALPHA_EIGER) += sys_eiger.o -obj-$(CONFIG_ALPHA_JENSEN) += sys_jensen.o pci-noop.o -obj-$(CONFIG_ALPHA_MIATA) += sys_miata.o -obj-$(CONFIG_ALPHA_MIKASA) += sys_mikasa.o -obj-$(CONFIG_ALPHA_NAUTILUS) += sys_nautilus.o -obj-$(CONFIG_ALPHA_NORITAKE) += sys_noritake.o -obj-$(CONFIG_ALPHA_RAWHIDE) += sys_rawhide.o -obj-$(CONFIG_ALPHA_RUFFIAN) += sys_ruffian.o -obj-$(CONFIG_ALPHA_RX164) += sys_rx164.o -obj-$(CONFIG_ALPHA_SABLE) += sys_sable.o - -ifneq ($(CONFIG_ALPHA_BOOK1)$(CONFIG_ALPHA_AVANTI)$(CONFIG_ALPHA_NONAME)$(CONFIG_ALPHA_P2K)$(CONFIG_ALPHA_XL),) -obj-y += sys_sio.o -endif - -obj-$(CONFIG_ALPHA_SX164) += sys_sx164.o -obj-$(CONFIG_ALPHA_TAKARA) += sys_takara.o -obj-$(CONFIG_ALPHA_WILDFIRE) += sys_wildfire.o - -ifneq ($(CONFIG_ALPHA_MIATA)$(CONFIG_ALPHA_RUFFIAN)$(CONFIG_ALPHA_SX164),) -obj-y += irq_pyxis.o -endif +obj-$(CONFIG_ALPHA_ALCOR) += sys_alcor.o irq_i8259.o irq_srm.o +obj-$(CONFIG_ALPHA_CABRIOLET) += sys_cabriolet.o irq_i8259.o irq_srm.o \ + ns87312.o +obj-$(CONFIG_ALPHA_EB164) += sys_cabriolet.o irq_i8259.o irq_srm.o \ + ns87312.o +obj-$(CONFIG_ALPHA_EB66P) += sys_cabriolet.o irq_i8259.o irq_srm.o \ + ns87312.o +obj-$(CONFIG_ALPHA_LX164) += sys_cabriolet.o irq_i8259.o irq_srm.o \ + smc37c93x.o +obj-$(CONFIG_ALPHA_PC164) += sys_cabriolet.o irq_i8259.o irq_srm.o \ + smc37c93x.o +obj-$(CONFIG_ALPHA_DP264) += sys_dp264.o irq_i8259.o es1888.o smc37c669.o +obj-$(CONFIG_ALPHA_SHARK) += sys_dp264.o irq_i8259.o es1888.o smc37c669.o +obj-$(CONFIG_ALPHA_TITAN) += sys_titan.o irq_i8259.o smc37c669.o +obj-$(CONFIG_ALPHA_EB64P) += sys_eb64p.o irq_i8259.o +obj-$(CONFIG_ALPHA_EB66) += sys_eb64p.o irq_i8259.o +obj-$(CONFIG_ALPHA_EIGER) += sys_eiger.o irq_i8259.o +obj-$(CONFIG_ALPHA_JENSEN) += sys_jensen.o pci-noop.o irq_i8259.o +obj-$(CONFIG_ALPHA_MIATA) += sys_miata.o irq_pyxis.o irq_i8259.o \ + es1888.o smc37c669.o +obj-$(CONFIG_ALPHA_MIKASA) += sys_mikasa.o irq_i8259.o irq_srm.o +obj-$(CONFIG_ALPHA_NAUTILUS) += sys_nautilus.o irq_i8259.o irq_srm.o +obj-$(CONFIG_ALPHA_NORITAKE) += sys_noritake.o irq_i8259.o +obj-$(CONFIG_ALPHA_RAWHIDE) += sys_rawhide.o irq_i8259.o +obj-$(CONFIG_ALPHA_RUFFIAN) += sys_ruffian.o irq_pyxis.o irq_i8259.o +obj-$(CONFIG_ALPHA_RX164) += sys_rx164.o irq_i8259.o +obj-$(CONFIG_ALPHA_SABLE) += sys_sable.o +obj-$(CONFIG_ALPHA_BOOK1) += sys_sio.o irq_i8259.o irq_srm.o ns87312.o +obj-$(CONFIG_ALPHA_AVANTI) += sys_sio.o irq_i8259.o irq_srm.o ns87312.o +obj-$(CONFIG_ALPHA_NONAME) += sys_sio.o irq_i8259.o irq_srm.o ns87312.o +obj-$(CONFIG_ALPHA_P2K) += sys_sio.o irq_i8259.o irq_srm.o ns87312.o +obj-$(CONFIG_ALPHA_XL) += sys_sio.o irq_i8259.o irq_srm.o ns87312.o +obj-$(CONFIG_ALPHA_SX164) += sys_sx164.o irq_pyxis.o irq_i8259.o \ + irq_srm.o smc37c669.o +obj-$(CONFIG_ALPHA_TAKARA) += sys_takara.o irq_i8259.o ns87312.o +obj-$(CONFIG_ALPHA_WILDFIRE) += sys_wildfire.o irq_i8259.o endif # GENERIC diff --git a/arch/alpha/kernel/alpha_ksyms.c b/arch/alpha/kernel/alpha_ksyms.c index 4aeb791b23c4..d571cc2877a4 100644 --- a/arch/alpha/kernel/alpha_ksyms.c +++ b/arch/alpha/kernel/alpha_ksyms.c @@ -33,6 +33,7 @@ #include <asm/semaphore.h> #include <asm/tlbflush.h> #include <asm/cacheflush.h> +#include <asm/vga.h> #define __KERNEL_SYSCALLS__ #include <asm/unistd.h> @@ -90,6 +91,7 @@ EXPORT_SYMBOL(___raw_writeq); EXPORT_SYMBOL(_memcpy_fromio); EXPORT_SYMBOL(_memcpy_toio); EXPORT_SYMBOL(_memset_c_io); +EXPORT_SYMBOL(scr_memcpyw); EXPORT_SYMBOL(insb); EXPORT_SYMBOL(insw); EXPORT_SYMBOL(insl); diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c index f308e98ff210..52231e371310 100644 --- a/arch/alpha/kernel/irq_i8259.c +++ b/arch/alpha/kernel/irq_i8259.c @@ -130,11 +130,11 @@ init_i8259a_irqs(void) # define IACK_SC TITAN_IACK_SC #elif defined(CONFIG_ALPHA_TSUNAMI) # define IACK_SC TSUNAMI_IACK_SC -#elif defined(CONFIG_ALPHA_POLARIS) -# define IACK_SC POLARIS_IACK_SC #elif defined(CONFIG_ALPHA_IRONGATE) # define IACK_SC IRONGATE_IACK_SC #endif +/* Note that CONFIG_ALPHA_POLARIS is intentionally left out here, since + sys_rx164 wants to use isa_no_iack_sc_device_interrupt for some reason. */ #if defined(IACK_SC) void diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index 42c22d05bbc6..a90b51837c7f 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c @@ -245,7 +245,6 @@ alcor_kill_arch(int mode) * The System Vectors */ -#if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_ALCOR) struct alpha_machine_vector alcor_mv __initmv = { .vector_name = "Alcor", DO_EV5_MMU, @@ -273,9 +272,7 @@ struct alpha_machine_vector alcor_mv __initmv = { }} }; ALIAS_MV(alcor) -#endif -#if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_XLT) struct alpha_machine_vector xlt_mv __initmv = { .vector_name = "XLT", DO_EV5_MMU, @@ -302,5 +299,6 @@ struct alpha_machine_vector xlt_mv __initmv = { .gru_int_req_bits = XLT_GRU_INT_REQ_BITS }} }; -ALIAS_MV(xlt) -#endif + +/* No alpha_mv alias for XLT, since we compile it in unconditionally + with ALCOR; setup_arch knows how to cope. */ diff --git a/arch/alpha/lib/Makefile b/arch/alpha/lib/Makefile index 72b5752cfae0..28c8eb689e86 100644 --- a/arch/alpha/lib/Makefile +++ b/arch/alpha/lib/Makefile @@ -7,58 +7,53 @@ L_TARGET := lib.a # Many of these routines have implementations tuned for ev6. # Choose them iff we're targeting ev6 specifically. -ev6 := -ifeq ($(CONFIG_ALPHA_EV6),y) - ev6 := ev6- -endif +ev6-$(CONFIG_ALPHA_EV6) := ev6- # Several make use of the cttz instruction introduced in ev67. -ev67 := -ifeq ($(CONFIG_ALPHA_EV67),y) - ev67 := ev67- -endif +ev67-$(CONFIG_ALPHA_EV67) := ev67- obj-y = __divqu.o __remqu.o __divlu.o __remlu.o \ udelay.o \ - $(ev6)memset.o \ - $(ev6)memcpy.o \ + $(ev6-y)memset.o \ + $(ev6-y)memcpy.o \ memmove.o \ io.o \ checksum.o \ csum_partial_copy.o \ - $(ev67)strlen.o \ - $(ev67)strcat.o \ + $(ev67-y)strlen.o \ + $(ev67-y)strcat.o \ strcpy.o \ - $(ev67)strncat.o \ + $(ev67-y)strncat.o \ strncpy.o \ - $(ev6)stxcpy.o \ - $(ev6)stxncpy.o \ - $(ev67)strchr.o \ - $(ev67)strrchr.o \ - $(ev6)memchr.o \ - $(ev6)copy_user.o \ - $(ev6)clear_user.o \ - $(ev6)strncpy_from_user.o \ - $(ev67)strlen_user.o \ - $(ev6)csum_ipv6_magic.o \ - $(ev6)clear_page.o \ - $(ev6)copy_page.o \ + $(ev6-y)stxcpy.o \ + $(ev6-y)stxncpy.o \ + $(ev67-y)strchr.o \ + $(ev67-y)strrchr.o \ + $(ev6-y)memchr.o \ + $(ev6-y)copy_user.o \ + $(ev6-y)clear_user.o \ + $(ev6-y)strncpy_from_user.o \ + $(ev67-y)strlen_user.o \ + $(ev6-y)csum_ipv6_magic.o \ + $(ev6-y)clear_page.o \ + $(ev6-y)copy_page.o \ strcasecmp.o \ fpreg.o \ callback_srm.o srm_puts.o srm_printk.o obj-$(CONFIG_SMP) += dec_and_lock.o -$(obj)/__divqu.o: $(obj)/$(ev6)divide.S - $(CC) $(AFLAGS) -DDIV -c -o $(obj)/__divqu.o $(obj)/$(ev6)divide.S - -$(obj)/__remqu.o: $(obj)/$(ev6)divide.S - $(CC) $(AFLAGS) -DREM -c -o $(obj)/__remqu.o $(obj)/$(ev6)divide.S - -$(obj)/__divlu.o: $(obj)/$(ev6)divide.S - $(CC) $(AFLAGS) -DDIV -DINTSIZE \ - -c -o $(obj)/__divlu.o $(obj)/$(ev6)divide.S - -$(obj)/__remlu.o: $(obj)/$(ev6)divide.S - $(CC) $(AFLAGS) -DREM -DINTSIZE \ - -c -o $(obj)/__remlu.o $(obj)/$(ev6)divide.S +# The division routines are built from single source, with different defines. +AFLAGS___divqu.o = -DDIV +AFLAGS___remqu.o = -DREM +AFLAGS___divlu.o = -DDIV -DINTSIZE +AFLAGS___remlu.o = -DREM -DINTSIZE + +$(obj)/__divqu.o: $(obj)/$(ev6-y)divide.S + $(cmd_as_o_S) +$(obj)/__remqu.o: $(obj)/$(ev6-y)divide.S + $(cmd_as_o_S) +$(obj)/__divlu.o: $(obj)/$(ev6-y)divide.S + $(cmd_as_o_S) +$(obj)/__remlu.o: $(obj)/$(ev6-y)divide.S + $(cmd_as_o_S) diff --git a/arch/alpha/math-emu/Makefile b/arch/alpha/math-emu/Makefile index 57921ead7697..dd59ab12c946 100644 --- a/arch/alpha/math-emu/Makefile +++ b/arch/alpha/math-emu/Makefile @@ -2,6 +2,6 @@ # Makefile for the FPU instruction emulation. # -CFLAGS += -I. -I$(TOPDIR)/include/math-emu -w +CFLAGS += -Iinclude/math-emu -w obj-$(CONFIG_MATHEMU) += math.o qrnnd.o diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f887b250fee1..28563dd35619 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -898,45 +898,6 @@ source "drivers/acorn/block/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -endmenu - # source net/ax25/Config.in source "net/irda/Kconfig" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 8fdb2bc24671..d153a972b6ef 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -210,7 +210,6 @@ zi:; $(Q)$(MAKE) $(build)=$(boot) zinstall arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ include/config/MARKER - @: include/asm-$(ARCH)/constants.h: arch/$(ARCH)/kernel/asm-offsets.s @echo -n ' Generating $@' diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 4b34de447ecf..d021ee4431aa 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -9,7 +9,7 @@ HEAD = head.o OBJS = misc.o -FONTC = drivers/video/font_acorn_8x8.c +FONTC = drivers/video/console/font_acorn_8x8.c # # Architecture dependencies diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index ba2b00a6ae95..d2f8e4ad8bae 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c @@ -127,7 +127,8 @@ EXPORT_SYMBOL(enable_irq); EXPORT_SYMBOL(disable_irq); EXPORT_SYMBOL(probe_irq_mask); EXPORT_SYMBOL(set_irq_type); -EXPORT_SYMBOL(set_irq_wake); +EXPORT_SYMBOL(enable_irq_wake); +EXPORT_SYMBOL(disable_irq_wake); EXPORT_SYMBOL(pm_idle); EXPORT_SYMBOL(pm_power_off); EXPORT_SYMBOL(fp_init); @@ -201,7 +202,6 @@ EXPORT_SYMBOL(__arch_clear_user); EXPORT_SYMBOL(__arch_strnlen_user); /* consistent area handling */ -EXPORT_SYMBOL(pci_alloc_consistent); EXPORT_SYMBOL(consistent_alloc); EXPORT_SYMBOL(consistent_free); EXPORT_SYMBOL(consistent_sync); diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index d60b6347b893..198558dd920e 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c @@ -12,6 +12,7 @@ #include <linux/init.h> #include <asm/page.h> /* for BUG() */ +#include <asm/io.h> #include <asm/irq.h> #include <asm/mach-types.h> #include <asm/mach/pci.h> diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index fbc35e91e755..7e6df7d5f2da 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S @@ -14,7 +14,7 @@ #else __syscall_start: -/* 0 */ .long sys_ni_syscall +/* 0 */ .long sys_restart_syscall .long sys_exit .long sys_fork_wrapper .long sys_read diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index a7cd6b892ffa..26d191131390 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -129,6 +129,31 @@ void enable_irq(unsigned int irq) spin_unlock_irqrestore(&irq_controller_lock, flags); } +/* + * Enable wake on selected irq + */ +void enable_irq_wake(unsigned int irq) +{ + struct irqdesc *desc = irq_desc + irq; + unsigned long flags; + + spin_lock_irqsave(&irq_controller_lock, flags); + if (desc->chip->wake) + desc->chip->wake(irq, 1); + spin_unlock_irqrestore(&irq_controller_lock, flags); +} + +void disable_irq_wake(unsigned int irq) +{ + struct irqdesc *desc = irq_desc + irq; + unsigned long flags; + + spin_lock_irqsave(&irq_controller_lock, flags); + if (desc->chip->wake) + desc->chip->wake(irq, 0); + spin_unlock_irqrestore(&irq_controller_lock, flags); +} + int show_interrupts(struct seq_file *p, void *v) { int i; diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 93dc50e3ccc6..51f8711be5d0 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c @@ -603,7 +603,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) case SIGQUIT: case SIGILL: case SIGTRAP: case SIGABRT: case SIGFPE: case SIGSEGV: case SIGBUS: case SIGSYS: case SIGXCPU: case SIGXFSZ: - if (do_coredump(signr, regs)) + if (do_coredump(signr, exit_code, regs)) exit_code |= 0x80; /* FALLTHRU */ @@ -615,7 +615,11 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) /* Are we from a system call? */ if (syscall) { + /* If so, check system call restarting.. */ switch (regs->ARM_r0) { + case -ERESTART_RESTARTBLOCK: + current_thread_info()->restart_block.fn = + do_no_restart_syscall; case -ERESTARTNOHAND: regs->ARM_r0 = -EINTR; break; @@ -638,12 +642,35 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall) return 1; } - if (syscall && - (regs->ARM_r0 == -ERESTARTNOHAND || - regs->ARM_r0 == -ERESTARTSYS || - regs->ARM_r0 == -ERESTARTNOINTR)) { - regs->ARM_r0 = regs->ARM_ORIG_r0; - regs->ARM_pc -= 4; + /* + * No signal to deliver to the process - restart the syscall. + */ + if (syscall) { + if (regs->ARM_r0 == -ERESTART_RESTARTBLOCK) { + if (thumb_mode(regs)) { + regs->ARM_r7 = __NR_restart_syscall; + regs->ARM_pc -= 2; + } else { + u32 *usp; + + regs->ARM_sp -= 12; + usp = (u32 *)regs->ARM_sp; + + put_user(regs->ARM_pc, &usp[0]); + /* swi __NR_restart_syscall */ + put_user(0xef000000 | __NR_restart_syscall, &usp[1]); + /* ldr pc, [sp], #12 */ + put_user(0xe49df00c, &usp[2]); + + regs->ARM_pc = regs->ARM_sp + 4; + } + } + if (regs->ARM_r0 == -ERESTARTNOHAND || + regs->ARM_r0 == -ERESTARTSYS || + regs->ARM_r0 == -ERESTARTNOINTR) { + regs->ARM_r0 = regs->ARM_ORIG_r0; + regs->ARM_pc -= 4; + } } if (single_stepping) ptrace_set_bpt(current); diff --git a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c index db5ab22d1d42..70f1066d8186 100644 --- a/arch/arm/mach-integrator/cpu.c +++ b/arch/arm/mach-integrator/cpu.c @@ -148,9 +148,11 @@ static int integrator_set_policy(struct cpufreq_policy *policy) static struct cpufreq_policy integrator_policy = { .cpu = 0, .policy = CPUFREQ_POLICY_POWERSAVE, - .cpuinfo.max_cpu_freq = 160000, - .cpuinfo.min_cpu_freq = 12000, - .cpuinfo.transition_latency = CPUFREQ_ETERNAL, + .cpuinfo = { + .max_cpu_freq = 160000, + .min_cpu_freq = 12000, + .transition_latency = CPUFREQ_ETERNAL, + }, }; static struct cpufreq_driver integrator_driver = { diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile index 54ebb8a2c1a0..3b852f807ba5 100644 --- a/arch/arm/mach-sa1100/Makefile +++ b/arch/arm/mach-sa1100/Makefile @@ -21,8 +21,7 @@ obj-$(CONFIG_SA1100_PT_SYSTEM3) += cpu-sa1110.o endif # Next, the SA1111 stuff. -obj-$(CONFIG_SA1111) += sa1111.o -obj-$(CONFIG_USB_OHCI_HCD) += sa1111-pcibuf.o pcipool.o +obj-$(CONFIG_SA1111) += sa1111.o sa1111-pcibuf.o pcipool.o # Specific board support obj-$(CONFIG_SA1100_ADSBITSY) += adsbitsy.o diff --git a/arch/arm/mach-sa1100/cpu-sa1100.c b/arch/arm/mach-sa1100/cpu-sa1100.c index 35259a3bb1ae..eb457a2d8fea 100644 --- a/arch/arm/mach-sa1100/cpu-sa1100.c +++ b/arch/arm/mach-sa1100/cpu-sa1100.c @@ -203,9 +203,11 @@ static int sa1100_setspeed(struct cpufreq_policy *policy) static struct cpufreq_policy sa1100_policy = { .cpu = 0, .policy = CPUFREQ_POLICY_POWERSAVE, - .cpuinfo.max_freq = 287000, - .cpuinfo.min_freq = 59000, - .cpuinfo.transition_latency = CPUFREQ_ETERNAL, + .cpuinfo = { + .max_freq = 287000, + .min_freq = 59000, + .transition_latency = CPUFREQ_ETERNAL, + }, }; static struct cpufreq_driver sa1100_driver = { diff --git a/arch/arm/mach-sa1100/cpu-sa1110.c b/arch/arm/mach-sa1100/cpu-sa1110.c index a7baecec05c3..7b2b9858741d 100644 --- a/arch/arm/mach-sa1100/cpu-sa1110.c +++ b/arch/arm/mach-sa1100/cpu-sa1110.c @@ -298,9 +298,11 @@ static int sa1110_setspeed(struct cpufreq_policy *policy) static struct cpufreq_policy sa1110_policy = { .cpu = 0, .policy = CPUFREQ_POLICY_POWERSAVE, - .cpuinfo.max_freq = 287000, - .cpuinfo.min_freq = 59000, - .cpuinfo.transition_latency = CPUFREQ_ETERNAL, + .cpuinfo = { + .max_freq = 287000, + .min_freq = 59000, + .transition_latency = CPUFREQ_ETERNAL, + }, }; static struct cpufreq_driver sa1110_driver = { diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c index 46f3baf9cabf..794734139372 100644 --- a/arch/arm/mach-sa1100/irq.c +++ b/arch/arm/mach-sa1100/irq.c @@ -92,12 +92,22 @@ static void sa1100_low_gpio_unmask(unsigned int irq) ICMR |= 1 << irq; } +static int sa1100_low_gpio_wake(unsigned int irq, unsigned int on) +{ + if (on) + PWER |= 1 << irq; + else + PWER &= ~(1 << irq); + return 0; +} + static struct irqchip sa1100_low_gpio_chip = { .ack = sa1100_low_gpio_ack, .mask = sa1100_low_gpio_mask, .unmask = sa1100_low_gpio_unmask, .rerun = sa1100_manual_rerun, .type = sa1100_gpio_type, + .wake = sa1100_low_gpio_wake, }; /* @@ -166,12 +176,22 @@ static void sa1100_high_gpio_unmask(unsigned int irq) GFER = GPIO_IRQ_falling_edge & GPIO_IRQ_mask; } +static int sa1100_high_gpio_wake(unsigned int irq, unsigned int on) +{ + if (on) + PWER |= GPIO11_27_MASK(irq); + else + PWER &= ~GPIO11_27_MASK(irq); + return 0; +} + static struct irqchip sa1100_high_gpio_chip = { .ack = sa1100_high_gpio_ack, .mask = sa1100_high_gpio_mask, .unmask = sa1100_high_gpio_unmask, .rerun = sa1100_manual_rerun, .type = sa1100_gpio_type, + .wake = sa1100_high_gpio_wake, }; /* @@ -252,5 +272,5 @@ void __init sa1100_init_irq(void) * We generally don't want the LCD IRQ being * enabled as soon as we request it. */ - set_irq_flags(IRQ_LCD, IRQF_VALID | IRQF_NOAUTOEN); + set_irq_flags(IRQ_LCD, IRQF_VALID/* | IRQF_NOAUTOEN*/); } diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index a73562679025..7fabd6b89ad6 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c @@ -6,9 +6,13 @@ #include <linux/kernel.h> #include <linux/tty.h> #include <linux/delay.h> +#include <linux/device.h> #include <linux/ioport.h> #include <asm/hardware.h> +#include <asm/hardware/sa1111.h> +#include <asm/irq.h> +#include <asm/mach-types.h> #include <asm/setup.h> #include <asm/mach/arch.h> @@ -19,33 +23,29 @@ #define JORTUCR_VAL 0x20000400 -#define JORSKCR_INIT 0x00002081 /* Turn off VCO to enable PLL, set Ready En and enable nOE assertion from DC */ -#define JORSKCR_RCLK 0x00002083 /* Add turning on RCLK to above */ -#define JORSKCR_VAL 0x0000001B /* sets the 1101 control register to on */ static int __init jornada720_init(void) { - GPDR |= GPIO_GPIO20; - TUCR = JORTUCR_VAL; /* set the oscillator out to the SA-1101 */ + int ret = -ENODEV; - GPSR = GPIO_GPIO20; - udelay(1); - GPCR = GPIO_GPIO20; - udelay(1); - GPSR = GPIO_GPIO20; - udelay(20); - SKCR = JORSKCR_INIT; /* Turn on the PLL, enable Ready and enable nOE assertion from DC */ - mdelay(100); + if (machine_is_jornada720()) { + GPDR |= GPIO_GPIO20; + TUCR = JORTUCR_VAL; /* set the oscillator out to the SA-1101 */ - SBI_SKCR = JORSKCR_RCLK;/* turn on the RCLOCK */ - SBI_SMCR = 0x35; /* initialize the SMC (debug SA-1111 reset */ - PCCR = 0; /* initialize the S2MC (debug SA-1111 reset) */ + GPSR = GPIO_GPIO20; + udelay(1); + GPCR = GPIO_GPIO20; + udelay(1); + GPSR = GPIO_GPIO20; + udelay(20); - /* LDD4 is speaker, LDD3 is microphone */ - PPSR &= ~(PPC_LDD3 | PPC_LDD4); - PPDR |= PPC_LDD3 | PPC_LDD4; + /* LDD4 is speaker, LDD3 is microphone */ + PPSR &= ~(PPC_LDD3 | PPC_LDD4); + PPDR |= PPC_LDD3 | PPC_LDD4; - return sa1111_init(0x40000000, IRQ_GPIO1); + ret = sa1111_init(0x40000000, IRQ_GPIO1); + } + return ret; } arch_initcall(jornada720_init); diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index 23a681189b96..1d6362864fab 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c @@ -88,6 +88,15 @@ static inline void __init neponset_init_irq(void) set_irq_chained_handler(IRQ_GPIO25, neponset_irq_handler); /* + * We would set IRQ_GPIO25 to be a wake-up IRQ, but + * unfortunately something on the Neponset activates + * this IRQ on sleep (ethernet?) + */ +#if 0 + enable_irq_wake(IRQ_GPIO25); +#endif + + /* * Setup other Neponset IRQs. SA1111 will be done by the * generic SA1111 code. */ @@ -191,7 +200,7 @@ static int neponset_resume(struct device *dev, u32 level) } static struct device_driver neponset_device_driver = { - .name = "NEPONSET", + .name = "neponset", .bus = &system_bus_type, .suspend = neponset_suspend, .resume = neponset_resume, diff --git a/arch/arm/mach-sa1100/pcipool.c b/arch/arm/mach-sa1100/pcipool.c index 141c7cbb819e..724afb8714ad 100644 --- a/arch/arm/mach-sa1100/pcipool.c +++ b/arch/arm/mach-sa1100/pcipool.c @@ -56,7 +56,7 @@ static inline const char *slot_name(const struct pci_pool *pool) if (pdev == 0) return "[0]"; - else if (dev_is_sa1111(pdev)) + else if (pcidev_is_sa1111(pdev)) return "[SA-1111]"; else return pdev->slot_name; diff --git a/arch/arm/mach-sa1100/sa1111-pcibuf.c b/arch/arm/mach-sa1100/sa1111-pcibuf.c index ebc2f4051c81..05acb901c3b5 100644 --- a/arch/arm/mach-sa1100/sa1111-pcibuf.c +++ b/arch/arm/mach-sa1100/sa1111-pcibuf.c @@ -124,7 +124,7 @@ destroy_safe_buffer_pools(void) /* allocate a 'safe' buffer and keep track of it */ static struct safe_buffer * -alloc_safe_buffer(struct pci_dev *hwdev, void *ptr, size_t size, int direction) +alloc_safe_buffer(void *ptr, size_t size, int direction) { struct safe_buffer *buf; struct pci_pool *pool; @@ -254,7 +254,7 @@ static void print_map_stats(void) #endif static dma_addr_t -map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) +map_single(void *ptr, size_t size, int direction) { dma_addr_t dma_addr; @@ -267,7 +267,7 @@ map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) DO_STATS ( bounce_count++ ) ; - buf = alloc_safe_buffer(hwdev, ptr, size, direction); + buf = alloc_safe_buffer(ptr, size, direction); if (buf == 0) { printk(KERN_ERR "%s: unable to map unsafe buffer %p!\n", @@ -302,8 +302,7 @@ map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) } static void -unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, - size_t size, int direction) +unmap_single(dma_addr_t dma_addr, size_t size, int direction) { struct safe_buffer *buf; @@ -332,8 +331,7 @@ unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, } static void -sync_single(struct pci_dev *hwdev, dma_addr_t dma_addr, - size_t size, int direction) +sync_single(dma_addr_t dma_addr, size_t size, int direction) { struct safe_buffer *buf; @@ -381,20 +379,19 @@ sync_single(struct pci_dev *hwdev, dma_addr_t dma_addr, * (basically move the buffer from an unsafe area to a safe one) */ dma_addr_t -sa1111_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) +sa1111_map_single(void *ptr, size_t size, int direction) { unsigned long flags; dma_addr_t dma_addr; - DPRINTK("%s(hwdev=%p,ptr=%p,size=%d,dir=%x)\n", - __func__, hwdev, ptr, size, direction); + DPRINTK("%s(ptr=%p,size=%d,dir=%x)\n", + __func__, ptr, size, direction); - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); BUG_ON(direction == PCI_DMA_NONE); local_irq_save(flags); - dma_addr = map_single(hwdev, ptr, size, direction); + dma_addr = map_single(ptr, size, direction); local_irq_restore(flags); @@ -409,35 +406,31 @@ sa1111_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) */ void -sa1111_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, - size_t size, int direction) +sa1111_unmap_single(dma_addr_t dma_addr, size_t size, int direction) { unsigned long flags; - DPRINTK("%s(hwdev=%p,ptr=%p,size=%d,dir=%x)\n", - __func__, hwdev, (void *) dma_addr, size, direction); + DPRINTK("%s(ptr=%p,size=%d,dir=%x)\n", + __func__, (void *) dma_addr, size, direction); - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); BUG_ON(direction == PCI_DMA_NONE); local_irq_save(flags); - unmap_single(hwdev, dma_addr, size, direction); + unmap_single(dma_addr, size, direction); local_irq_restore(flags); } int -sa1111_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, - int nents, int direction) +sa1111_map_sg(struct scatterlist *sg, int nents, int direction) { unsigned long flags; int i; - DPRINTK("%s(hwdev=%p,sg=%p,nents=%d,dir=%x)\n", - __func__, hwdev, sg, nents, direction); + DPRINTK("%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, direction); - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); BUG_ON(direction == PCI_DMA_NONE); local_irq_save(flags); @@ -449,7 +442,7 @@ sa1111_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, void *ptr = page_address(page) + offset; sg->dma_address = - map_single(hwdev, ptr, length, direction); + map_single(ptr, length, direction); } local_irq_restore(flags); @@ -458,16 +451,14 @@ sa1111_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, } void -sa1111_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, - int direction) +sa1111_unmap_sg(struct scatterlist *sg, int nents, int direction) { unsigned long flags; int i; - DPRINTK("%s(hwdev=%p,sg=%p,nents=%d,dir=%x)\n", - __func__, hwdev, sg, nents, direction); + DPRINTK("%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, direction); - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); BUG_ON(direction == PCI_DMA_NONE); local_irq_save(flags); @@ -476,41 +467,36 @@ sa1111_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, dma_addr_t dma_addr = sg->dma_address; unsigned int length = sg->length; - unmap_single(hwdev, dma_addr, length, direction); + unmap_single(dma_addr, length, direction); } local_irq_restore(flags); } void -sa1111_dma_sync_single(struct pci_dev *hwdev, dma_addr_t dma_addr, - size_t size, int direction) +sa1111_dma_sync_single(dma_addr_t dma_addr, size_t size, int direction) { unsigned long flags; - DPRINTK("%s(hwdev=%p,ptr=%p,size=%d,dir=%x)\n", - __func__, hwdev, (void *) dma_addr, size, direction); - - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); + DPRINTK("%s(ptr=%p,size=%d,dir=%x)\n", + __func__, (void *) dma_addr, size, direction); local_irq_save(flags); - sync_single(hwdev, dma_addr, size, direction); + sync_single(dma_addr, size, direction); local_irq_restore(flags); } void -sa1111_dma_sync_sg(struct pci_dev *hwdev, struct scatterlist *sg, - int nents, int direction) +sa1111_dma_sync_sg(struct scatterlist *sg, int nents, int direction) { unsigned long flags; int i; - DPRINTK("%s(hwdev=%p,sg=%p,nents=%d,dir=%x)\n", - __func__, hwdev, sg, nents, direction); + DPRINTK("%s(sg=%p,nents=%d,dir=%x)\n", + __func__, sg, nents, direction); - BUG_ON(hwdev != SA1111_FAKE_PCIDEV); BUG_ON(direction == PCI_DMA_NONE); local_irq_save(flags); @@ -519,7 +505,7 @@ sa1111_dma_sync_sg(struct pci_dev *hwdev, struct scatterlist *sg, dma_addr_t dma_addr = sg->dma_address; unsigned int length = sg->length; - sync_single(hwdev, dma_addr, length, direction); + sync_single(dma_addr, length, direction); } local_irq_restore(flags); diff --git a/arch/arm/mach-sa1100/sa1111.c b/arch/arm/mach-sa1100/sa1111.c index 3d2d93c6ea84..038101ed24a6 100644 --- a/arch/arm/mach-sa1100/sa1111.c +++ b/arch/arm/mach-sa1100/sa1111.c @@ -249,6 +249,19 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags) INTPOL0 &= ~mask; else INTPOL0 |= mask; + WAKE_POL0 = INTPOL0; + + return 0; +} + +static int sa1111_wake_lowirq(unsigned int irq, unsigned int on) +{ + unsigned int mask = SA1111_IRQMASK_LO(irq); + + if (on) + WAKE_EN0 |= mask; + else + WAKE_EN0 &= ~mask; return 0; } @@ -259,6 +272,7 @@ static struct irqchip sa1111_low_chip = { .unmask = sa1111_unmask_lowirq, .rerun = sa1111_rerun_lowirq, .type = sa1111_type_lowirq, + .wake = sa1111_wake_lowirq, }; static void sa1111_mask_highirq(unsigned int irq) @@ -309,6 +323,19 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags) INTPOL1 &= ~mask; else INTPOL1 |= mask; + WAKE_POL1 = INTPOL1; + + return 0; +} + +static int sa1111_wake_highirq(unsigned int irq, unsigned int on) +{ + unsigned int mask = SA1111_IRQMASK_HI(irq); + + if (on) + WAKE_EN1 |= mask; + else + WAKE_EN1 &= ~mask; return 0; } @@ -319,6 +346,7 @@ static struct irqchip sa1111_high_chip = { .unmask = sa1111_unmask_highirq, .rerun = sa1111_rerun_highirq, .type = sa1111_type_highirq, + .wake = sa1111_wake_highirq, }; static void __init sa1111_init_irq(struct sa1111_dev *sadev) @@ -854,7 +882,7 @@ static int sa1111_remove(struct device *dev) * PXA250/SA1110 machine classes. */ static struct device_driver sa1111_device_driver = { - .name = "SA1111", + .name = "sa1111", .bus = &system_bus_type, .probe = sa1111_probe, .remove = sa1111_remove, diff --git a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c index 2b717c261a86..5bf50fc12ba0 100644 --- a/arch/arm/mm/consistent.c +++ b/arch/arm/mm/consistent.c @@ -94,17 +94,6 @@ no_page: return NULL; } -void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *handle) -{ - int gfp = GFP_KERNEL; - - if (hwdev == NULL || dev_is_sa1111(hwdev) || - hwdev->dma_mask != 0xffffffff) - gfp |= GFP_DMA; - - return consistent_alloc(gfp, size, handle); -} - /* * free a page as defined by the above mapping. We expressly forbid * calling this from interrupt context. diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 678f02652025..22b0d6a1d196 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types @@ -6,7 +6,7 @@ # To add an entry into this database, please see Documentation/arm/README, # or contact rmk@arm.linux.org.uk # -# Last update: Sat Nov 16 15:57:50 2002 +# Last update: Mon Dec 23 18:49:04 2002 # # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number # @@ -154,7 +154,7 @@ piranha ARCH_PIRANHA PIRANHA 142 sbcamelot SA1100_SBCAMELOT SBCAMELOT 143 kings SA1100_KINGS KINGS 144 smdk2400 ARCH_SMDK2400 SMDK2400 145 -collie ARCH_COLLIE COLLIE 146 +collie SA1100_COLLIE COLLIE 146 idr ARCH_IDR IDR 147 badge4 SA1100_BADGE4 BADGE4 148 webnet ARCH_WEBNET WEBNET 149 @@ -258,3 +258,18 @@ chimp ARCH_CHIMP CHIMP 246 stork_nest ARCH_STORK_NEST STORK_NEST 247 stork_egg ARCH_STORK_EGG STORK_EGG 248 wismo SA1100_WISMO WISMO 249 +ezlinx ARCH_EZLINX EZLINX 250 +at91rm9200 ARCH_AT91 AT91 251 +orion ARCH_ORION ORION 252 +neptune ARCH_NEPTUNE NEPTUNE 253 +hackkit SA1100_HACKKIT HACKKIT 254 +pxa_wins30 ARCH_PXA_WINS30 PXA_WINS30 255 +lavinna SA1100_LAVINNA LAVINNA 256 +pxa_uengine ARCH_PXA_UENGINE PXA_UENGINE 257 +innokom ARCH_INNOKOM INNOKOM 258 +bms ARCH_BMS BMS 259 +ixcdp1100 ARCH_IXCDP1100 IXCDP1100 260 +prpmc1100 ARCH_PRPMC1100 PRPMC1100 261 +at91rm9200dk ARCH_AT91RM9200DK AT91RM9200DK 262 +armstick ARCH_ARMSTICK ARMSTICK 263 +armonie ARCH_ARMONIE ARMONIE 264 diff --git a/arch/arm/vmlinux-armv.lds.in b/arch/arm/vmlinux-armv.lds.in index e0fd7aaa4fcf..c660e67be1cd 100644 --- a/arch/arm/vmlinux-armv.lds.in +++ b/arch/arm/vmlinux-armv.lds.in @@ -26,6 +26,9 @@ SECTIONS __setup_start = .; *(.init.setup) __setup_end = .; + __start___param = .; + *(__param) + __stop___param = .; __initcall_start = .; *(.initcall1.init) *(.initcall2.init) diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 5f7f8e0d1469..9081054193f3 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -603,47 +603,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 186f22f8c1cf..e26819f478ba 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig @@ -1436,47 +1436,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c index 8f1d6405a90c..a81108dfb113 100644 --- a/arch/i386/kernel/apm.c +++ b/arch/i386/kernel/apm.c @@ -331,12 +331,6 @@ extern int (*console_blank_hook)(int); #define DEFAULT_BOUNCE_INTERVAL (3 * HZ) /* - * Save a segment register away - */ -#define savesegment(seg, where) \ - __asm__ __volatile__("movl %%" #seg ",%0" : "=m" (where)) - -/* * Maximum number of events stored */ #define APM_MAX_EVENTS 20 diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 1c9c7d17dcc5..c6108fa910e1 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -274,12 +274,6 @@ void release_thread(struct task_struct *dead_task) release_x86_irqs(dead_task); } -/* - * Save a segment. - */ -#define savesegment(seg,value) \ - asm volatile("movl %%" #seg ",%0":"=m" (*(int *)&(value))) - int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, unsigned long unused, struct task_struct * p, struct pt_regs * regs) diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 1a2933160766..615fa7ea5764 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -655,44 +655,6 @@ source "net/Kconfig" if !IA64_HP_SIM -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local systems) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "drivers/isdn/Kconfig" diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 82fb20e2b639..657e5f9afb94 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -1152,496 +1152,6 @@ endmenu source "net/Kconfig" -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -# -# Network device configuration -# -config DUMMY - tristate "Dummy net driver support" - depends on NETDEVICES - ---help--- - This is essentially a bit-bucket device (i.e. traffic you send to - this device is consigned into oblivion) with a configurable IP - address. It is most commonly used in order to make your currently - inactive SLIP address seem like a real address for local programs. - If you use SLIP or PPP, you might want to say Y here. Since this - thing often comes in handy, the default is Y. It won't enlarge your - kernel either. What a deal. Read about it in the Network - Administrator's Guide, available from - <http://www.linuxdoc.org/docs.html#guide>. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt>. The module - will be called dummy.o. If you want to use more than one dummy - device at a time, you need to compile this driver as a module. - Instead of 'dummy', the devices will then be called 'dummy0', - 'dummy1' etc. - -config SLIP - tristate "SLIP (serial line) support" - depends on NETDEVICES - ---help--- - Say Y if you intend to use SLIP or CSLIP (compressed SLIP) to - connect to your Internet service provider or to connect to some - other local Unix box or if you want to configure your Linux box as a - Slip/CSlip server for other people to dial in. SLIP (Serial Line - Internet Protocol) is a protocol used to send Internet traffic over - serial connections such as telephone lines or null modem cables; - nowadays, the protocol PPP is more commonly used for this same - purpose. - - Normally, your access provider has to support SLIP in order for you - to be able to use it, but there is now a SLIP emulator called SLiRP - around (available from - <ftp://ibiblio.org/pub/Linux/system/network/serial/>) which - allows you to use SLIP over a regular dial up shell connection. If - you plan to use SLiRP, make sure to say Y to CSLIP, below. The - NET-3-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>, explains how to - configure SLIP. Note that you don't need this option if you just - want to run term (term is a program which gives you almost full - Internet connectivity if you have a regular dial up shell account on - some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). SLIP - support will enlarge your kernel by about 4 KB. If unsure, say N. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. The module will be - called slip.o. - -config SLIP_COMPRESSED - bool "CSLIP compressed headers" - depends on SLIP - ---help--- - This protocol is faster than SLIP because it uses compression on the - TCP/IP headers (not on the data itself), but it has to be supported - on both ends. Ask your access provider if you are not sure and - answer Y, just in case. You will still be able to use plain SLIP. If - you plan to use SLiRP, the SLIP emulator (available from - <ftp://ibiblio.org/pub/Linux/system/network/serial/>) which - allows you to use SLIP over a regular dial up shell connection, you - definitely want to say Y here. The NET-3-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>, explains how to configure - CSLIP. This won't enlarge your kernel. - -config SLIP_SMART - bool "Keepalive and linefill" - depends on SLIP - help - Adds additional capabilities to the SLIP driver to support the - RELCOM line fill and keepalive monitoring. Ideal on poor quality - analogue lines. - -config SLIP_MODE_SLIP6 - bool "Six bit SLIP encapsulation" - depends on SLIP - help - Just occasionally you may need to run IP over hostile serial - networks that don't pass all control characters or are only seven - bit. Saying Y here adds an extra mode you can use with SLIP: - "slip6". In this mode, SLIP will only send normal ASCII symbols over - the serial device. Naturally, this has to be supported at the other - end of the link as well. It's good enough, for example, to run IP - over the async ports of a Camtec JNT Pad. If unsure, say N. - -config PPP - tristate "PPP (point-to-point protocol) support" - depends on NETDEVICES - ---help--- - PPP (Point to Point Protocol) is a newer and better SLIP. It serves - the same purpose: sending Internet traffic over telephone (and other - serial) lines. Ask your access provider if they support it, because - otherwise you can't use it; most Internet access providers these - days support PPP rather than SLIP. - - To use PPP, you need an additional program called pppd as described - in the PPP-HOWTO, available at - <http://www.linuxdoc.org/docs.html#howto>. Make sure that you have - the version of pppd recommended in <file:Documentation/Changes>. - The PPP option enlarges your kernel by about 16 KB. - - There are actually two versions of PPP: the traditional PPP for - asynchronous lines, such as regular analog phone lines, and - synchronous PPP which can be used over digital ISDN lines for - example. If you want to use PPP over phone lines or other - asynchronous serial lines, you need to say Y (or M) here and also to - the next option, "PPP support for async serial ports". For PPP over - synchronous lines, you should say Y (or M) here and to "Support - synchronous PPP", below. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - If you said Y to "Version information on all symbols" above, then - you cannot compile the PPP driver into the kernel; you can then only - compile it as a module. The module will be called ppp_generic.o. - If you want to compile it as a module, say M here and read - <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. - -config PPP_MULTILINK - bool "PPP multilink support (EXPERIMENTAL)" - depends on PPP && EXPERIMENTAL - -config PPP_FILTER - bool "PPP filtering" - depends on PPP && FILTER - -config PPP_ASYNC - tristate "PPP support for async serial ports" - depends on PPP - -config PPP_SYNC_TTY - tristate "PPP support for sync tty ports" - depends on PPP - -config PPP_DEFLATE - tristate "PPP Deflate compression" - depends on PPP - -config PPP_BSDCOMP - tristate "PPP BSD-Compress compression" - depends on PPP - -config PPPOE - tristate "PPP over Ethernet (EXPERIMENTAL)" - depends on EXPERIMENTAL && PPP - -config EQUALIZER - tristate "EQL (serial line load balancing) support" - depends on NETDEVICES - ---help--- - If you have two serial connections to some other computer (this - usually requires two modems and two telephone lines) and you use - SLIP (the protocol for sending Internet traffic over telephone - lines) or PPP (a better SLIP) on them, you can make them behave like - one double speed connection using this driver. Naturally, this has - to be supported at the other end as well, either with a similar EQL - Linux driver or with a Livingston Portmaster 2e. - - Say Y if you want this and read - <file:Documentation/networking/eql.txt>. You may also want to read - section 6.2 of the NET-3-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called eql.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. If - unsure, say N. - -config ARIADNE - tristate "Ariadne support" - depends on NETDEVICES && ZORRO - help - If you have a Village Tronic Ariadne Ethernet adapter, say Y. - Otherwise, say N. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you - want). The module is called ariadne.o. If you want to compile it as - a module, say M here and read <file:Documentation/modules.txt>. - -config ARIADNE2 - tristate "Ariadne II support" - depends on NETDEVICES && ZORRO - help - This driver is for the Village Tronic Ariadne II and the Individual - Computers X-Surf Ethernet cards. If you have such a card, say Y. - Otherwise, say N. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called ariadne2.o. If you want to compile it as - a module, say M here and read <file:Documentation/modules.txt>. - -config A2065 - tristate "A2065 support" - depends on NETDEVICES && ZORRO - help - If you have a Commodore A2065 Ethernet adapter, say Y. Otherwise, - say N. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you - want). The module is called a2065.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - -config HYDRA - tristate "Hydra support" - depends on NETDEVICES && ZORRO - help - If you have a Hydra Ethernet adapter, say Y. Otherwise, say N. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you - want). The module is called hydra.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - -config APNE - tristate "PCMCIA NE2000 support" - depends on NETDEVICES && AMIGA_PCMCIA - help - If you have a PCMCIA NE2000 compatible adapter, say Y. Otherwise, - say N. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you - want). The module is called apne.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - -config APOLLO_ELPLUS - tristate "Apollo 3c505 support" - depends on NETDEVICES && APOLLO - help - Say Y or M here if your Apollo has a 3Com 3c505 ISA Ethernet card. - If you don't have one made for Apollos, you can use one from a PC, - except that your Apollo won't be able to boot from it (because the - code in the ROM will be for a PC). - -config MAC8390 - bool "Macintosh NS 8390 based ethernet cards" - depends on NETDEVICES && MAC - help - If you want to include a driver to support Nubus or LC-PDS - Ethernet cards using an NS8390 chipset or its equivalent, say Y - and read the Ethernet-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - -config MACSONIC - tristate "Macintosh SONIC based ethernet (onboard, NuBus, LC, CS)" - depends on NETDEVICES && MAC - ---help--- - Support for NatSemi SONIC based Ethernet devices. This includes - the onboard Ethernet in many Quadras as well as some LC-PDS, - a few Nubus and all known Comm Slot Ethernet cards. If you have - one of these say Y and read the Ethernet-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. This module will - be called macsonic.o. - -config SMC9194 - tristate "Macintosh SMC 9194 based ethernet cards" - depends on NETDEVICES && MAC - ---help--- - This is support for the SMC9xxx based Ethernet cards. Choose this - option if you have a DELL laptop with the docking station, or - another SMC9192/9194 based chipset. Say Y if you want it compiled - into the kernel, and read the file - <file:Documentation/networking/smc9.txt> and the Ethernet-HOWTO, - available from <http://www.linuxdoc.org/docs.html#howto>. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called smc9194.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt> as well - as <file:Documentation/networking/net-modules.txt>. - -config MAC89x0 - tristate "Macintosh CS89x0 based ethernet cards" - depends on NETDEVICES && MAC - ---help--- - Support for CS89x0 chipset based Ethernet cards. If you have a - Nubus or LC-PDS network (Ethernet) card of this type, say Y and - read the Ethernet-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. This module will - be called mac89x0.o. - -config MACMACE - bool "Macintosh (AV) onboard MACE ethernet (EXPERIMENTAL)" - depends on NETDEVICES && MAC && EXPERIMENTAL - help - Support for the onboard AMD 79C940 MACE Ethernet controller used in - the 660AV and 840AV Macintosh. If you have one of these Macintoshes - say Y and read the Ethernet-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - -config MVME147_NET - tristate "MVME147 (Lance) Ethernet support" - depends on NETDEVICES && MVME147 - help - Support for the on-board Ethernet interface on the Motorola MVME147 - single-board computer. Say Y here to include the - driver for this chip in your kernel. If you want to compile it as - a module, say M here and read <file:Documentation/modules.txt>. - -config MVME16x_NET - tristate "MVME16x Ethernet support" - depends on NETDEVICES && MVME16x - help - This is the driver for the Ethernet interface on the Motorola - MVME162, 166, 167, 172 and 177 boards. Say Y here to include the - driver for this chip in your kernel. If you want to compile it as - a module, say M here and read <file:Documentation/modules.txt>. - -config BVME6000_NET - tristate "BVME6000 Ethernet support" - depends on NETDEVICES && BVME6000 - help - This is the driver for the Ethernet interface on BVME4000 and - BVME6000 VME boards. Say Y here to include the driver for this chip - in your kernel. If you want to compile it as a module, say M here - and read <file:Documentation/modules.txt>. - -config ATARILANCE - tristate "Atari Lance support" - depends on NETDEVICES && ATARI - help - Say Y to include support for several Atari Ethernet adapters based - on the AMD Lance chipset: RieblCard (with or without battery), or - PAMCard VME (also the version by Rhotron, with different addresses). - -config ATARI_BIONET - tristate "BioNet-100 support" - depends on NETDEVICES && ATARI && ATARI_ACSI!=n - help - Say Y to include support for BioData's BioNet-100 Ethernet adapter - for the ACSI port. The driver works (has to work...) with a polled - I/O scheme, so it's rather slow :-( - -config ATARI_PAMSNET - tristate "PAMsNet support" - depends on NETDEVICES && ATARI && ATARI_ACSI!=n - help - Say Y to include support for the PAMsNet Ethernet adapter for the - ACSI port ("ACSI node"). The driver works (has to work...) with a - polled I/O scheme, so it's rather slow :-( - -config SUN3LANCE - tristate "Sun3/Sun3x on-board LANCE support" - depends on NETDEVICES && (SUN3 || SUN3X) - help - Most Sun3 and Sun3x motherboards (including the 3/50, 3/60 and 3/80) - featured an AMD Lance 10Mbit Ethernet controller on board; say Y - here to compile in the Linux driver for this and enable Ethernet. - General Linux information on the Sun 3 and 3x series (now - discontinued) is at - <http://www.angelfire.com/ca2/tech68k/sun3.html>. - - If you're not building a kernel for a Sun 3, say N. - -config SUN3_82586 - tristate "Sun3 on-board Intel 82586 support" - depends on NETDEVICES && SUN3 - help - This driver enables support for the on-board Intel 82586 based - Ethernet adapter found on Sun 3/1xx and 3/2xx motherboards. Note - that this driver does not support 82586-based adapters on additional - VME boards. - -config HPLANCE - bool "HP on-board LANCE support" - depends on NETDEVICES && HP300 - help - If you want to use the builtin "LANCE" Ethernet controller on an - HP300 machine, say Y here. - -config PLIP - tristate "PLIP (parallel port) support" - depends on NETDEVICES && Q40 && PARPORT - ---help--- - PLIP (Parallel Line Internet Protocol) is used to create a - reasonably fast mini network consisting of two (or, rarely, more) - local machines. A PLIP link from a Linux box is a popular means to - install a Linux distribution on a machine which doesn't have a - CD-ROM drive (a minimal system has to be transferred with floppies - first). The kernels on both machines need to have this PLIP option - enabled for this to work. - - The PLIP driver has two modes, mode 0 and mode 1. The parallel - ports (the connectors at the computers with 25 holes) are connected - with "null printer" or "Turbo Laplink" cables which can transmit 4 - bits at a time (mode 0) or with special PLIP cables, to be used on - bidirectional parallel ports only, which can transmit 8 bits at a - time (mode 1); you can find the wiring of these cables in - <file:Documentation/networking/PLIP.txt>. The cables can be up to - 15m long. Mode 0 works also if one of the machines runs DOS/Windows - and has some PLIP software installed, e.g. the Crynwr PLIP packet - driver (<http://oak.oakland.edu/simtel.net/msdos/pktdrvr-pre.html>) - and winsock or NCSA's telnet. - - If you want to use PLIP, say Y and read the PLIP mini-HOWTO as well - as the NET-3-HOWTO, both available from - <http://www.linuxdoc.org/docs.html#howto>. Note that the PLIP - protocol has been changed and this PLIP driver won't work together - with the PLIP support in Linux versions 1.0.x. This option enlarges - your kernel by about 8 KB. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. The module will be - called plip.o. If unsure, say Y or M, in case you buy a laptop - later. - -config NE2000 - tristate "NE2000/NE1000 support" - depends on NETDEVICES && Q40 && m - ---help--- - If you have a network (Ethernet) card of this type, say Y and read - the Ethernet-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. Many Ethernet cards - without a specific driver are compatible with NE2000. - - If you have a PCI NE2000 card however, say N here and Y to "PCI - NE2000 support", above. If you have a NE2000 card and are running on - an MCA system (a bus system used on some IBM PS/2 computers and - laptops), say N here and Y to "NE/2 (ne2000 MCA version) support", - below. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called ne.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt> as well - as <file:Documentation/networking/net-modules.txt>. - -endmenu - - menu "Character devices" config SERIAL diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index 333eb3c5fb98..db981241a41e 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -611,47 +611,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index fb570cf0ae57..44744dbe40fe 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -919,47 +919,6 @@ endif source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/mips64/Kconfig b/arch/mips64/Kconfig index a42f67b70e6e..4b242b93aae4 100644 --- a/arch/mips64/Kconfig +++ b/arch/mips64/Kconfig @@ -504,47 +504,6 @@ endmenu #source drivers/message/i2o/Config.in source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 3104b344cf09..25baa10a0035 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -276,46 +276,6 @@ source "drivers/md/Kconfig" source "net/Kconfig" -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - #source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index 3c55bfb40f21..10f2bb5d2de0 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig @@ -1415,47 +1415,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/ppc/kernel/module.c b/arch/ppc/kernel/module.c index 8e396b7f40c0..696a4faaeb3c 100644 --- a/arch/ppc/kernel/module.c +++ b/arch/ppc/kernel/module.c @@ -108,15 +108,15 @@ int module_frob_arch_sections(Elf32_Ehdr *hdr, { unsigned int i; - /* Find .plt and .pltinit sections */ + /* Find .plt and .init.plt sections */ for (i = 0; i < hdr->e_shnum; i++) { - if (strcmp(secstrings + sechdrs[i].sh_name, ".plt.init") == 0) + if (strcmp(secstrings + sechdrs[i].sh_name, ".init.plt") == 0) me->arch.init_plt_section = i; else if (strcmp(secstrings + sechdrs[i].sh_name, ".plt") == 0) me->arch.core_plt_section = i; } if (!me->arch.core_plt_section || !me->arch.init_plt_section) { - printk("Module doesn't contain .plt or .plt.init sections.\n"); + printk("Module doesn't contain .plt or .init.plt sections.\n"); return -ENOEXEC; } diff --git a/arch/ppc64/Kconfig b/arch/ppc64/Kconfig index 6ae491191a36..7d5444a9d56e 100644 --- a/arch/ppc64/Kconfig +++ b/arch/ppc64/Kconfig @@ -354,47 +354,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/ppc64/Makefile b/arch/ppc64/Makefile index 84fa0c34d8b6..3ba80c9682cf 100644 --- a/arch/ppc64/Makefile +++ b/arch/ppc64/Makefile @@ -13,61 +13,47 @@ # Adjusted for PPC64 by Tom Gall # -KERNELLOAD =0xc000000000000000 +KERNELLOAD = 0xc000000000000000 LDFLAGS := -m elf64ppc -LDFLAGS_vmlinux = -Bstatic \ - -e $(KERNELLOAD) -Ttext $(KERNELLOAD) +LDFLAGS_vmlinux = -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD) LDFLAGS_BLOB := --format binary --oformat elf64-powerpc -CFLAGS := $(CFLAGS) -msoft-float -pipe \ +CFLAGS += -msoft-float -pipe \ -Wno-uninitialized -mminimal-toc -mtraceback=full \ -finline-limit-2000 -mcpu=power4 -CPP = $(CC) -E $(CFLAGS) - HEAD := arch/ppc64/kernel/head.o -core-y += arch/ppc64/kernel/ arch/ppc64/mm/ arch/ppc64/lib/ -core-$(CONFIG_XMON) += arch/ppc64/xmon/ - -# FIXME: is drivers- right ? -drivers-$(CONFIG_OPROFILE) += arch/ppc64/oprofile/ - -makeboot = $(call descend,arch/ppc64/boot,$(1)) - -ifdef CONFIG_PPC_PSERIES -BOOT_TARGETS = zImage zImage.initrd -endif +libs-y += arch/ppc64/lib/ +core-y += arch/ppc64/kernel/ +core-y += arch/ppc64/mm/ +core-$(CONFIG_XMON) += arch/ppc64/xmon/ +drivers-$(CONFIG_OPROFILE) += arch/ppc64/oprofile/ -ifdef CONFIG_PPC_ISERIES -BOOT_TARGETS = vmlinux.sminitrd vmlinux.initrd vmlinux.sm -endif +makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/ppc64/boot $(1) -$(BOOT_TARGETS): vmlinux - @$(call makeboot,arch/ppc64/boot/$@) +boottarget-$(CONFIG_PPC_PSERIES) := zImage zImage.initrd +boottarget-$(CONFIG_PPC_ISERIES) := vmlinux.sminitrd vmlinux.initrd vmlinux.sm +$(boottarget-y): vmlinux + $(call makeboot,arch/ppc64/boot/$@) %_config: arch/ppc64/configs/%_defconfig rm -f .config arch/ppc64/defconfig cp -f arch/ppc64/configs/$(@:config=defconfig) arch/ppc64/defconfig archclean: - @$(call makeboot,clean) + $(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/ppc64/boot -archmrproper: +prepare: include/asm-ppc64/offsets.h - -prepare: include/asm-$(ARCH)/offsets.h - -arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ +arch/ppc64/kernel/asm-offsets.s: include/asm include/linux/version.h \ include/config/MARKER -include/asm-$(ARCH)/offsets.h.tmp: arch/$(ARCH)/kernel/asm-offsets.s - @$(generate-asm-offsets.h) < $< > $@ - -include/asm-$(ARCH)/offsets.h: include/asm-$(ARCH)/offsets.h.tmp +include/asm-ppc64/offsets.h: arch/ppc64/kernel/asm-offsets.s @echo -n ' Generating $@' + @$(generate-asm-offsets.h) < $< > $@.tmp @$(update-if-changed) -CLEAN_FILES += include/asm-$(ARCH)/offsets.h.tmp \ - include/asm-$(ARCH)/offsets.h +CLEAN_FILES += include/asm-ppc64/offsets.h.tmp \ + include/asm-ppc64/offsets.h diff --git a/arch/ppc64/boot/Makefile b/arch/ppc64/boot/Makefile index 8172219a09b5..ac1f5a109a8a 100644 --- a/arch/ppc64/boot/Makefile +++ b/arch/ppc64/boot/Makefile @@ -23,92 +23,88 @@ CROSS32_COMPILE = #CROSS32_COMPILE = /usr/local/ppc/bin/powerpc-linux- -BOOTCC = $(CROSS32_COMPILE)gcc -BOOTCFLAGS = $(HOSTCFLAGS) -I$(objtree)/include -BOOTLD = $(CROSS32_COMPILE)ld -BOOTAS = $(CROSS32_COMPILE)as -BOOTAFLAGS = -D__ASSEMBLY__ $(HOSTCFLAGS) - -$(obj)/start.o: $(obj)/start.c - $(BOOTCC) $(BOOTCFLAGS) -c -o $*.o $< - -$(obj)/main.o: $(obj)/main.c - $(BOOTCC) $(BOOTCFLAGS) -c -o $*.o $< - -$(obj)/zlib.o: $(obj)/zlib.c - $(BOOTCC) $(BOOTCFLAGS) -c -o $*.o $< - -$(obj)/imagesize.o: $(obj)/imagesize.c - $(BOOTCC) $(BOOTCFLAGS) -c -o $*.o $< - -$(obj)/no_initrd.o: $(obj)/no_initrd.c - $(BOOTCC) $(BOOTCFLAGS) -c -o $*.o $< - -$(obj)/crt0.o: $(obj)/crt0.S - $(BOOTCC) $(BOOTAFLAGS) -traditional -c -o $*.o $< - -CFLAGS = $(CPPFLAGS) -O -fno-builtin -DSTDC_HEADERS -LD_ARGS = -Ttext 0x00400000 -e _start -OBJCOPYFLAGS := -S -O binary - -OBJS = $(addprefix $(obj)/,crt0.o start.o main.o zlib.o image.o imagesize.o) - -ifeq ($(CONFIG_PPC_ISERIES),y) - -boot: vmlinux.sm - -$(obj)/addSystemMap: $(obj)/addSystemMap.c - $(HOSTCC) $(HOSTCFLAGS) -o $@ $< - -$(obj)/vmlinux.sm: vmlinux $(obj)/addSystemMap - $(obj)/addSystemMap System.map vmlinux $(obj)/vmlinux.sm - -$(obj)/addRamDisk: $(obj)/addRamDisk.c - $(HOSTCC) $(HOSTCFLAGS) -o $@ $< - -$(obj)/vmlinux.initrd: vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map - $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map vmlinux $(obj)/vmlinux.initrd - -$(obj)/vmlinux.sminitrd: $(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map - $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map $(obj)/vmlinux.sm $(obj)/vmlinux.sminitrd - -else -boot: zImage -endif - -$(obj)/piggyback: $(obj)/piggyback.c - $(HOSTCC) $(HOSTCFLAGS) -DKERNELBASE=$(KERNELBASE) -o $@ $< - -$(obj)/addnote: $(obj)/addnote.c - $(HOSTCC) $(HOSTCFLAGS) -o $@ $< - -$(obj)/image.o: $(obj)/piggyback $(obj)/vmlinux.gz - $(obj)/piggyback $(obj)/image < $(obj)/vmlinux.gz | $(BOOTAS) -o $@ - -$(obj)/sysmap.o: $(obj)/piggyback System.map - $(obj)/piggyback $(obj)/sysmap < System.map | $(BOOTAS) -o $(obj)/sysmap.o - -$(obj)/initrd.o: $(obj)/ramdisk.image.gz $(obj)/piggyback - $(obj)/piggyback $(obj)/initrd < $(obj)/ramdisk.image.gz | $(BOOTAS) -o $(obj)/initrd.o - -$(obj)/zImage: $(OBJS) $(obj)/no_initrd.o $(obj)/addnote - $(BOOTLD) $(LD_ARGS) -T $(obj)/zImage.lds -o $@ $(OBJS) $(obj)/no_initrd.o - $(obj)/addnote $@ - -$(obj)/zImage.initrd: $(OBJS) $(obj)/initrd.o $(obj)/addnote - $(BOOTLD) $(LD_ARGS) -T $(obj)/zImage.lds -o $@ $(OBJS) $(obj)/initrd.o - ./addnote $@ - -$(obj)/vmlinux.gz: vmlinux - $(OBJCOPY) $(OBJCOPYFLAGS) vmlinux $(obj)/vmlinux - ls -l $(obj)/vmlinux | awk '{printf "/* generated -- do not edit! */\nint uncompressed_size = %d;\n", $$5}' > $(obj)/imagesize.c - $(CROSS_COMPILE)nm -n vmlinux | tail -1 | awk '{printf "long vmlinux_end = 0x%s;\n", substr($$1,8)}' >> $(obj)/imagesize.c - gzip -vf9 $(obj)/vmlinux - -$(obj)/imagesize.c: $(obj)/vmlinux.gz - -clean: - @rm -f $(OBJS) - @rm -f $(addprefix $(obj)/,piggyback note addnote zImage \ - zImage.initrd vmlinux.gz no_initrd.o imagesize.c addSystemMap \ - vmlinux.sm addRamDisk vmlinux.initrd vmlinux.sminitrd) +BOOTCC := $(CROSS32_COMPILE)gcc +BOOTCFLAGS := $(HOSTCFLAGS) -Iinclude +BOOTLD := $(CROSS32_COMPILE)ld +BOOTAS := $(CROSS32_COMPILE)as +BOOTAFLAGS := -D__ASSEMBLY__ $(HOSTCFLAGS) + +CFLAGS := $(CPPFLAGS) -O -fno-builtin -DSTDC_HEADERS +LD_ARGS := -Ttext 0x00400000 -e _start +OBJCOPYFLAGS := -S -O binary + +obj-boot := start.o main.o zlib.o imagesize.o no_initrd.o +OBJS := crt0.o start.o main.o zlib.o imagesize.o image.o +obj-boot := $(addprefix $(obj)/,$(obj-boot)) +OBJS := $(addprefix $(obj)/,$(OBJS)) +targets += $(obj-boot) $(addprefix $(obj)/,image.c image.o) + +quiet_cmd_bootcc = BOOTCC $@ + cmd_bootcc = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< +$(obj-boot): %.o: %.c FORCE + $(call if_changed_dep,bootcc) + +quiet_cmd_bootas = BOOTAS $@ + cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -traditional \ + -c -o $@ $< +$(obj)/crt0.o: %.o: %.S FORCE + $(call if_changed_dep,bootas) + +host-progs := piggyback addnote addSystemMap addRamDisk +HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE) +EXTRA_TARGETS += zImage zImage.initrd vmlinux.bin vmlinux.gz \ + vmlinux.sm vmlinux.initrd vmlinux.sminitrd \ + sysmap.o initrd.o + +quiet_cmd_sysmap = SYSMAP $@ + cmd_sysmap = $(obj)/addSystemMap System.map $< $@ +$(obj)/vmlinux.sm: vmlinux $(obj)/addSystemMap System.map FORCE + $(call if_changed,sysmap) + +quiet_cmd_ramdisk = RAMDISK $@ + cmd_ramdisk = $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map $< $@ +$(obj)/vmlinux.initrd: vmlinux $(obj)/addRamDisk $(obj)/ramdisk.image.gz System.map FORCE + $(call if_changed,ramdisk) + +$(obj)/vmlinux.sminitrd: $(obj)/vmlinux.sm $(obj)/addRamDisk $(obj)/ramdisk.image.gz FORCE + $(call if_changed,ramdisk) + + +quiet_cmd_piggy = PIGGY $@ + cmd_piggy = $(obj)/piggyback $(@:.o=) < $< | $(BOOTAS) -o $@ + +$(obj)/image.o: $(obj)/vmlinux.gz $(obj)/piggyback FORCE + $(call if_changed,piggy) + +$(obj)/sysmap.o: System.map $(obj)/piggyback FORCE + $(call if_changed,piggy) + +$(obj)/initrd.o: $(obj)/ramdisk.image.gz $(obj)/piggyback FORCE + $(call if_changed,piggy) + +quiet_cmd_addnote = ADDNOTE $@ + cmd_addnote = $(BOOTLD) $(LD_ARGS) -T $(obj)/zImage.lds -o $@ $(OBJS) $<\ + && $(obj)/addnote $@ + +$(obj)/zImage: $(obj)/no_initrd.o $(OBJS) $(obj)/addnote FORCE + $(call if_changed,addnote) + +$(obj)/zImage.initrd: $(obj)/initrd.o $(OBJS) $(obj)/addnote FORCE + $(call if_changed,addnote) + +$(obj)/vmlinux.bin: vmlinux FORCE + $(call if_changed,objcopy) + +$(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE + $(call if_changed,gzip) + +$(obj)/imagesize.c: vmlinux + @echo Generating $@ + ls -l vmlinux | \ + awk '{printf "/* generated -- do not edit! */\n" \ + "int uncompressed_size = %d;\n", $$5}' > $(obj)/imagesize.c + $(CROSS_COMPILE)nm -n vmlinux | tail -1 | \ + awk '{printf "long vmlinux_end = 0x%s;\n", substr($$1,8)}' \ + >> $(obj)/imagesize.c + +clean-files := $(targets) diff --git a/arch/ppc64/boot/main.c b/arch/ppc64/boot/main.c index be0f398681ee..8d14d7172480 100644 --- a/arch/ppc64/boot/main.c +++ b/arch/ppc64/boot/main.c @@ -14,6 +14,8 @@ #include <asm/page.h> #include <asm/bootinfo.h> +#undef DEBUG + void memmove(void *dst, void *im, int len); extern void *finddevice(const char *); @@ -90,7 +92,9 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom) for(claim_addr = PROG_START; claim_addr <= PROG_START * 8; claim_addr += 0x100000) { +#ifdef DEBUG printf(" trying: 0x%08lx\n\r", claim_addr); +#endif dst = claim(claim_addr, uncompressed_size, 0); if (dst != (void *)-1) break; } @@ -118,6 +122,7 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom) bi_recs = make_bi_recs((unsigned long)dst + vmlinux_end); kernel_entry = (kernel_entry_t)dst; +#ifdef DEBUG printf( "kernel:\n\r" " entry addr = 0x%lx\n\r" " a1 = 0x%lx,\n\r" @@ -126,6 +131,7 @@ chrpboot(unsigned long a1, unsigned long a2, void *prom) " bi_recs = 0x%lx,\n\r", (unsigned long)kernel_entry, a1, a2, (unsigned long)prom, (unsigned long)bi_recs); +#endif kernel_entry( a1, a2, prom, bi_recs ); diff --git a/arch/ppc64/defconfig b/arch/ppc64/defconfig index 680af7a42967..fd327b57517f 100644 --- a/arch/ppc64/defconfig +++ b/arch/ppc64/defconfig @@ -7,6 +7,8 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_ISA_DMA=y CONFIG_HAVE_DEC_LOCK=y CONFIG_EARLY_PRINTK=y +CONFIG_COMPAT=y +CONFIG_FRAME_POINTER=y # # Code maturity level options @@ -64,7 +66,7 @@ CONFIG_PROC_DEVICETREE=y # CONFIG_PARPORT is not set # -# Plug and Play configuration +# Plug and Play support # # CONFIG_PNP is not set @@ -118,6 +120,7 @@ CONFIG_CHR_DEV_SG=y # CONFIG_SCSI_AACRAID is not set # CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_IN2000 is not set @@ -412,6 +415,14 @@ CONFIG_HVC_CONSOLE=y # CONFIG_I2C is not set # +# I2C Hardware Sensors Mainboard support +# + +# +# I2C Hardware Sensors Chip support +# + +# # Mice # # CONFIG_BUSMOUSE is not set @@ -563,31 +574,21 @@ CONFIG_NLS_DEFAULT="iso8859-1" # CONFIG_NLS_UTF8 is not set # -# Console drivers -# - -# -# Frame-buffer support +# Graphics support # CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y # CONFIG_FB_CLGEN is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ATY is not set # CONFIG_FB_CT65550 is not set # CONFIG_FB_IMSTT is not set # CONFIG_FB_S3TRIO is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_RIVA is not set -CONFIG_FB_MATROX=y -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G450=y -CONFIG_FB_MATROX_G100=y -CONFIG_FB_MATROX_MULTIHEAD=y +# CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set # CONFIG_FB_SIS is not set # CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_3DFX is not set @@ -595,19 +596,14 @@ CONFIG_FB_MATROX_MULTIHEAD=y # CONFIG_FB_TRIDENT is not set # CONFIG_FB_PM3 is not set # CONFIG_FB_VIRTUAL is not set -# CONFIG_FBCON_ADVANCED is not set -CONFIG_FBCON_CFB8=y -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -CONFIG_FBCON_FONTWIDTH8_ONLY=y -# CONFIG_FONT_SUN8x16 is not set -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set # # Sound diff --git a/arch/ppc64/kernel/Makefile b/arch/ppc64/kernel/Makefile index a92f400bedbd..e044b9cf6003 100644 --- a/arch/ppc64/kernel/Makefile +++ b/arch/ppc64/kernel/Makefile @@ -1,40 +1,32 @@ # -# Makefile for the linux kernel. +# Makefile for the linux ppc64 kernel. # -EXTRA_CFLAGS = -mno-minimal-toc - -KHEAD := head.o - -EXTRA_TARGETS := $(KHEAD) - -export-objs := ppc_ksyms.o +EXTRA_CFLAGS += -mno-minimal-toc +EXTRA_TARGETS := head.o +export-objs := ppc_ksyms.o obj-y := ppc_ksyms.o setup.o entry.o traps.o irq.o idle.o \ time.o process.o signal.o syscalls.o misc.o ptrace.o \ align.o semaphore.o bitops.o stab.o htab.o pacaData.o \ - LparData.o udbg.o binfmt_elf32.o sys_ppc32.o sys32.o \ - ioctl32.o ptrace32.o signal32.o open_pic.o xics.o \ - pmc.o mf_proc.o proc_pmc.o iSeries_setup.o \ - ItLpQueue.o hvCall.o mf.o HvLpEvent.o ras.o \ - iSeries_proc.o HvCall.o HvLpConfig.o \ - rtc.o init_task.o pSeries_htab.o - -obj-$(CONFIG_PCI) += pci.o pci_dn.o pci_dma.o - -ifeq ($(CONFIG_PPC_ISERIES),y) -obj-$(CONFIG_PCI) += iSeries_pci.o iSeries_pci_reset.o iSeries_IoMmTable.o iSeries_irq.o iSeries_VpdInfo.o XmPciLpEvent.o -endif -ifeq ($(CONFIG_PPC_PSERIES),y) -obj-$(CONFIG_PCI) += pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o eeh.o - -obj-y += rtasd.o nvram.o -endif - -obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o - -obj-$(CONFIG_SMP) += smp.o - -obj-$(CONFIG_PROFILING) += profile.o - -obj-y += prom.o lmb.o rtas.o rtas-proc.o chrp_setup.o i8259.o + udbg.o binfmt_elf32.o sys_ppc32.o sys32.o ioctl32.o \ + ptrace32.o signal32.o pmc.o rtc.o init_task.o \ + lmb.o pci.o pci_dn.o pci_dma.o + +obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_pci_reset.o \ + iSeries_IoMmTable.o iSeries_irq.o \ + iSeries_VpdInfo.o XmPciLpEvent.o \ + HvCall.o HvLpConfig.o LparData.o mf_proc.o \ + proc_pmc.o iSeries_setup.o ItLpQueue.o hvCall.o \ + mf.o HvLpEvent.o iSeries_proc.o + +obj-$(CONFIG_PPC_PSERIES) += pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o \ + eeh.o rtasd.o nvram.o + +# Change this to pSeries only once we've got iSeries up to date +obj-y += open_pic.o xics.o pSeries_htab.o rtas.o \ + rtas-proc.o chrp_setup.o i8259.o ras.o prom.o + +obj-$(CONFIG_RTAS_FLASH) += rtas_flash.o +obj-$(CONFIG_SMP) += smp.o +obj-$(CONFIG_PROFILING) += profile.o diff --git a/arch/ppc64/kernel/chrp_setup.c b/arch/ppc64/kernel/chrp_setup.c index 121429be09f7..a387af93058d 100644 --- a/arch/ppc64/kernel/chrp_setup.c +++ b/arch/ppc64/kernel/chrp_setup.c @@ -60,7 +60,7 @@ #include "i8259.h" #include "open_pic.h" -#include "xics.h" +#include <asm/xics.h> #include <asm/ppcdebug.h> extern volatile unsigned char *chrp_int_ack_special; diff --git a/arch/ppc64/kernel/head.S b/arch/ppc64/kernel/head.S index ab0821860c4a..3f89ee8d2ab1 100644 --- a/arch/ppc64/kernel/head.S +++ b/arch/ppc64/kernel/head.S @@ -79,7 +79,7 @@ _stext: _STATIC(__start) b .__start_initialization_pSeries - +#ifdef CONFIG_PPC_ISERIES /* At offset 0x20, there is a pointer to iSeries LPAR data. * This is required by the hypervisor */ . = 0x20 @@ -90,9 +90,7 @@ _STATIC(__start) * between physical addresses and absolute addresses) and * to the pidhash table (also used by the debugger) */ .llong msChunks-KERNELBASE -#ifdef CONFIG_PPC_ISERIES .llong pidhash-KERNELBASE -#endif /* Offset 0x38 - Pointer to start of embedded System.map */ .globl embedded_sysmap_start @@ -102,6 +100,7 @@ embedded_sysmap_start: .globl embedded_sysmap_end embedded_sysmap_end: .llong 0 +#endif /* Secondary processors spin on this value until it goes to 1. */ .globl __secondary_hold_spinloop @@ -365,11 +364,15 @@ __start_interupts: * point to itVpdAreas. On pSeries native, this value is not used. */ . = 0x4000 - .globl __end_interupts + .globl __end_interrupts .globl __start_naca __end_interupts: __start_naca: +#ifdef CONFIG_PPC_ISERIES .llong itVpdAreas +#else + .llong 0x0 +#endif .llong 0x0 .llong 0x0 .llong paca @@ -390,6 +393,7 @@ __start_stab: .globl __end_stab __end_stab: +#ifdef CONFIG_PPC_ISERIES /* * The iSeries LPAR map is at this fixed address * so that the HvReleaseData structure can address @@ -503,7 +507,7 @@ maskable_exception_exit: mfspr r21,SPRG1 mfspr r20,SPRG2 rfid - +#endif /* * Data area reserved for FWNMI option. */ @@ -1217,7 +1221,7 @@ _GLOBAL(pseries_secondary_smp_init) #endif #endif b 1b /* Loop until told to go */ - +#ifdef CONFIG_PPC_ISERIES _GLOBAL(__start_initialization_iSeries) LOADADDR(r1,init_thread_union) @@ -1241,6 +1245,7 @@ _GLOBAL(__start_initialization_iSeries) bl .iSeries_fixup_klimit b .start_here_common +#endif _GLOBAL(__start_initialization_pSeries) mr r31,r3 /* save parameters */ @@ -1248,9 +1253,6 @@ _GLOBAL(__start_initialization_pSeries) mr r29,r5 mr r28,r6 mr r27,r7 - mr r26,r8 /* YABOOT: debug_print() routine */ - mr r25,r9 /* YABOOT: debug_delay() routine */ - mr r24,r10 /* YABOOT: debug_prom() routine */ bl .enable_64b_mode @@ -1295,9 +1297,6 @@ _GLOBAL(__start_initialization_pSeries) mr r5,r29 mr r6,r28 mr r7,r27 - mr r8,r26 - mr r9,r25 - mr r10,r24 bl .prom_init diff --git a/arch/ppc64/kernel/init_task.c b/arch/ppc64/kernel/init_task.c index d4f2ba7ebf36..f4b881bd1727 100644 --- a/arch/ppc64/kernel/init_task.c +++ b/arch/ppc64/kernel/init_task.c @@ -13,7 +13,7 @@ struct mm_struct init_mm = INIT_MM(init_mm); /* * Initial thread structure. * - * We need to make sure that this is 8192-byte aligned due to the + * We need to make sure that this is 16384-byte aligned due to the * way process stacks are handled. This is done by having a special * "init_task" linker map entry.. */ diff --git a/arch/ppc64/kernel/ioctl32.c b/arch/ppc64/kernel/ioctl32.c index f78eb2dfaeeb..6d04f959b1ed 100644 --- a/arch/ppc64/kernel/ioctl32.c +++ b/arch/ppc64/kernel/ioctl32.c @@ -442,13 +442,13 @@ struct ifreq32 { struct ifmap32 ifru_map; char ifru_slave[IFNAMSIZ]; /* Just fits the size */ char ifru_newname[IFNAMSIZ]; - __kernel_caddr_t32 ifru_data; + compat_caddr_t ifru_data; } ifr_ifru; }; struct ifconf32 { int ifc_len; /* size of buffer */ - __kernel_caddr_t32 ifcbuf; + compat_caddr_t ifcbuf; }; #ifdef CONFIG_NET @@ -884,7 +884,7 @@ struct floppy_struct32 { unsigned char rate; unsigned char spec1; unsigned char fmt_gap; - const __kernel_caddr_t32 name; + const compat_caddr_t name; }; struct floppy_drive_params32 { @@ -923,7 +923,7 @@ struct floppy_drive_struct32 { int fd_ref; int fd_device; int last_checked; - __kernel_caddr_t32 dmabuf; + compat_caddr_t dmabuf; int bufblocks; }; @@ -1413,7 +1413,7 @@ out: } struct ppp_option_data32 { - __kernel_caddr_t32 ptr; + compat_caddr_t ptr; __u32 length; int transmit; }; @@ -1494,8 +1494,8 @@ struct mtget32 { __u32 mt_dsreg; __u32 mt_gstat; __u32 mt_erreg; - __kernel_daddr_t32 mt_fileno; - __kernel_daddr_t32 mt_blkno; + compat_daddr_t mt_fileno; + compat_daddr_t mt_blkno; }; #define MTIOCGET32 _IOR('m', 2, struct mtget32) @@ -1613,7 +1613,7 @@ static int mt_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg) struct cdrom_read32 { int cdread_lba; - __kernel_caddr_t32 cdread_bufaddr; + compat_caddr_t cdread_bufaddr; int cdread_buflen; }; @@ -1621,16 +1621,16 @@ struct cdrom_read_audio32 { union cdrom_addr addr; u_char addr_format; int nframes; - __kernel_caddr_t32 buf; + compat_caddr_t buf; }; struct cdrom_generic_command32 { unsigned char cmd[CDROM_PACKET_SIZE]; - __kernel_caddr_t32 buffer; + compat_caddr_t buffer; unsigned int buflen; int stat; - __kernel_caddr_t32 sense; - __kernel_caddr_t32 reserved[3]; + compat_caddr_t sense; + compat_caddr_t reserved[3]; }; static int cdrom_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg) @@ -1639,7 +1639,7 @@ static int cdrom_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long ar struct cdrom_read cdread; struct cdrom_read_audio cdreadaudio; struct cdrom_generic_command cgc; - __kernel_caddr_t32 addr; + compat_caddr_t addr; char *data = 0; void *karg; int err = 0; @@ -1722,9 +1722,9 @@ out: if (data) struct loop_info32 { int lo_number; /* ioctl r/o */ - __kernel_dev_t32 lo_device; /* ioctl r/o */ + compat_dev_t lo_device; /* ioctl r/o */ unsigned int lo_inode; /* ioctl r/o */ - __kernel_dev_t32 lo_rdevice; /* ioctl r/o */ + compat_dev_t lo_rdevice; /* ioctl r/o */ int lo_offset; int lo_encrypt_type; int lo_encrypt_key_size; /* ioctl w/o */ @@ -2054,7 +2054,7 @@ static int do_smb_getmountuid(unsigned int fd, unsigned int cmd, unsigned long a set_fs(old_fs); if (err >= 0) - err = put_user(kuid, (__kernel_uid_t32 *)arg); + err = put_user(kuid, (compat_uid_t *)arg); return err; } @@ -2062,7 +2062,7 @@ static int do_smb_getmountuid(unsigned int fd, unsigned int cmd, unsigned long a struct ncp_ioctl_request_32 { unsigned int function; unsigned int size; - __kernel_caddr_t32 data; + compat_caddr_t data; }; struct ncp_fs_info_v2_32 { @@ -2083,13 +2083,13 @@ struct ncp_objectname_ioctl_32 { int auth_type; unsigned int object_name_len; - __kernel_caddr_t32 object_name; /* an userspace data, in most cases user name */ + compat_caddr_t object_name; /* an userspace data, in most cases user name */ }; struct ncp_privatedata_ioctl_32 { unsigned int len; - __kernel_caddr_t32 data; /* ~1000 for NDS */ + compat_caddr_t data; /* ~1000 for NDS */ }; #define NCP_IOC_NCPREQUEST_32 _IOR('n', 1, struct ncp_ioctl_request_32) @@ -2362,12 +2362,12 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon struct atmif_sioc32 { int number; int length; - __kernel_caddr_t32 arg; + compat_caddr_t arg; }; struct atm_iobuf32 { int length; - __kernel_caddr_t32 buffer; + compat_caddr_t buffer; }; #define ATM_GETLINKRATE32 _IOW('a', ATMIOC_ITF+1, struct atmif_sioc32) @@ -2428,7 +2428,7 @@ static int do_atm_iobuf(unsigned int fd, unsigned int cmd, unsigned long arg) iobuf.length = iobuf32.length; - if (iobuf32.buffer == (__kernel_caddr_t32) NULL || iobuf32.length == 0) { + if (iobuf32.buffer == (compat_caddr_t) NULL || iobuf32.length == 0) { iobuf.buffer = (void*)(unsigned long)iobuf32.buffer; } else { iobuf.buffer = kmalloc(iobuf.length, GFP_KERNEL); @@ -2482,7 +2482,7 @@ static int do_atmif_sioc(unsigned int fd, unsigned int cmd, unsigned long arg) sioc.number = sioc32.number; sioc.length = sioc32.length; - if (sioc32.arg == (__kernel_caddr_t32) NULL || sioc32.length == 0) { + if (sioc32.arg == (compat_caddr_t) NULL || sioc32.length == 0) { sioc.arg = (void*)(unsigned long)sioc32.arg; } else { sioc.arg = kmalloc(sioc.length, GFP_KERNEL); @@ -3656,7 +3656,7 @@ struct ioctl_trans { #define HANDLE_IOCTL(cmd,handler) { cmd, (unsigned long)handler, 0 } #define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int) -#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, __kernel_uid_t32) +#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t) static struct ioctl_trans ioctl_translations[] = { /* List here explicitly which ioctl's need translation, @@ -3708,11 +3708,6 @@ COMPATIBLE_IOCTL(TIOCSLTC), COMPATIBLE_IOCTL(FBIOGET_VSCREENINFO), COMPATIBLE_IOCTL(FBIOPUT_VSCREENINFO), COMPATIBLE_IOCTL(FBIOPAN_DISPLAY), -COMPATIBLE_IOCTL(FBIOGET_FCURSORINFO), -COMPATIBLE_IOCTL(FBIOGET_VCURSORINFO), -COMPATIBLE_IOCTL(FBIOPUT_VCURSORINFO), -COMPATIBLE_IOCTL(FBIOGET_CURSORSTATE), -COMPATIBLE_IOCTL(FBIOPUT_CURSORSTATE), COMPATIBLE_IOCTL(FBIOGET_CON2FBMAP), COMPATIBLE_IOCTL(FBIOPUT_CON2FBMAP), #if 0 @@ -3763,6 +3758,8 @@ COMPATIBLE_IOCTL(BLKRRPART), COMPATIBLE_IOCTL(BLKFLSBUF), COMPATIBLE_IOCTL(BLKSECTSET), COMPATIBLE_IOCTL(BLKSSZGET), +COMPATIBLE_IOCTL(BLKRASET), +COMPATIBLE_IOCTL(BLKFRASET), /* RAID */ COMPATIBLE_IOCTL(RAID_VERSION), COMPATIBLE_IOCTL(GET_ARRAY_INFO), @@ -4350,6 +4347,8 @@ HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp), HANDLE_IOCTL(HDIO_GETGEO, hdio_getgeo), HANDLE_IOCTL(HDIO_GETGEO_BIG_RAW, hdio_getgeo_big), HANDLE_IOCTL(BLKGETSIZE, w_long), +HANDLE_IOCTL(BLKRAGET, w_long), +HANDLE_IOCTL(BLKFRAGET, w_long), HANDLE_IOCTL(0x1260, broken_blkgetsize), HANDLE_IOCTL(BLKSECTGET, w_long), HANDLE_IOCTL(BLKPG, blkpg_ioctl_trans), diff --git a/arch/ppc64/kernel/irq.c b/arch/ppc64/kernel/irq.c index ec27ced1df88..413f2a388784 100644 --- a/arch/ppc64/kernel/irq.c +++ b/arch/ppc64/kernel/irq.c @@ -395,7 +395,7 @@ handle_irq_event(int irq, struct pt_regs *regs, struct irqaction *action) } #ifdef CONFIG_SMP -extern unsigned int irq_affinity [NR_IRQS]; +extern unsigned long irq_affinity [NR_IRQS]; typedef struct { unsigned long cpu; @@ -409,7 +409,7 @@ static irq_balance_t irq_balance[NR_IRQS] __cacheline_aligned (idle_cpu(cpu) && ((now) - irq_stat[(cpu)].idle_timestamp > 1)) #define IRQ_ALLOWED(cpu,allowed_mask) \ - ((1 << cpu) & (allowed_mask)) + ((1UL << cpu) & (allowed_mask)) #define IRQ_BALANCE_INTERVAL (HZ/50) @@ -461,7 +461,7 @@ static inline void balance_irq(int irq) new_cpu = move(entry->cpu, allowed_mask, now, random_number); if (entry->cpu != new_cpu) { entry->cpu = new_cpu; - irq_desc[irq].handler->set_affinity(irq, 1 << new_cpu); + irq_desc[irq].handler->set_affinity(irq, 1UL << new_cpu); } } } @@ -649,19 +649,19 @@ static struct proc_dir_entry * irq_dir [NR_IRQS]; static struct proc_dir_entry * smp_affinity_entry [NR_IRQS]; #ifdef CONFIG_IRQ_ALL_CPUS -unsigned int irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = 0xffffffff}; +unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = -1UL}; #else /* CONFIG_IRQ_ALL_CPUS */ -unsigned int irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = 0x00000000}; +unsigned long irq_affinity [NR_IRQS] = { [0 ... NR_IRQS-1] = 0x0}; #endif /* CONFIG_IRQ_ALL_CPUS */ -#define HEX_DIGITS 8 +#define HEX_DIGITS 16 static int irq_affinity_read_proc (char *page, char **start, off_t off, int count, int *eof, void *data) { if (count < HEX_DIGITS+1) return -EINVAL; - return sprintf (page, "%08x\n", irq_affinity[(int)(long)data]); + return sprintf(page, "%16lx\n", irq_affinity[(long)data]); } static unsigned int parse_hex_value (const char *buffer, @@ -679,7 +679,7 @@ static unsigned int parse_hex_value (const char *buffer, return -EFAULT; /* - * Parse the first 8 characters as a hex string, any non-hex char + * Parse the first 16 characters as a hex string, any non-hex char * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same. */ value = 0; @@ -704,7 +704,7 @@ out: static int irq_affinity_write_proc (struct file *file, const char *buffer, unsigned long count, void *data) { - int irq = (int)(long) data, full_count = count, err; + int irq = (long)data, full_count = count, err; unsigned long new_value; if (!irq_desc[irq].handler->set_affinity) @@ -712,8 +712,6 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer, err = parse_hex_value(buffer, count, &new_value); -/* Why is this disabled ? --BenH */ -#if 0/*CONFIG_SMP*/ /* * Do not allow disabling IRQs completely - it's a too easy * way to make the system unusable accidentally :-) At least @@ -721,7 +719,6 @@ static int irq_affinity_write_proc (struct file *file, const char *buffer, */ if (!(new_value & cpu_online_map)) return -EINVAL; -#endif irq_affinity[irq] = new_value; irq_desc[irq].handler->set_affinity(irq, new_value); diff --git a/arch/ppc64/kernel/misc.S b/arch/ppc64/kernel/misc.S index a91729af66e8..236111b5719b 100644 --- a/arch/ppc64/kernel/misc.S +++ b/arch/ppc64/kernel/misc.S @@ -398,46 +398,6 @@ _GLOBAL(_outsl_ns) bdnz 00b blr -/* - * Extended precision shifts - * - * R3/R4 has 64 bit value - * R5 has shift count - * result in R3/R4 - * - * ashrdi3: XXXYYY/ZZZAAA -> SSSXXX/YYYZZZ - * ashldi3: XXXYYY/ZZZAAA -> YYYZZZ/AAA000 - * lshrdi3: XXXYYY/ZZZAAA -> 000XXX/YYYZZZ - */ -/* MIKEC: These may no longer be needed...what does gcc expect ? */ - -_GLOBAL(__ashrdi3) - li r6,32 - sub r6,r6,r5 - slw r7,r3,r6 /* isolate YYY */ - srw r4,r4,r5 /* isolate ZZZ */ - or r4,r4,r7 /* YYYZZZ */ - sraw r3,r3,r5 /* SSSXXX */ - blr - -_GLOBAL(__ashldi3) - li r6,32 - sub r6,r6,r5 - srw r7,r4,r6 /* isolate ZZZ */ - slw r4,r4,r5 /* AAA000 */ - slw r3,r3,r5 /* YYY--- */ - or r3,r3,r7 /* YYYZZZ */ - blr - -_GLOBAL(__lshrdi3) - li r6,32 - sub r6,r6,r5 - slw r7,r3,r6 /* isolate YYY */ - srw r4,r4,r5 /* isolate ZZZ */ - or r4,r4,r7 /* YYYZZZ */ - srw r3,r3,r5 /* 000XXX */ - blr - _GLOBAL(abs) cmpi 0,r3,0 bge 10f @@ -551,7 +511,7 @@ _GLOBAL(sys_call_table32) .llong .sys_rmdir /* 40 */ .llong .sys_dup .llong .sys_pipe - .llong .sys32_times + .llong .compat_sys_times .llong .sys_ni_syscall /* old prof syscall */ .llong .sys_brk /* 45 */ .llong .sys_setgid @@ -614,9 +574,9 @@ _GLOBAL(sys_call_table32) .llong .sys32_syslog .llong .compat_sys_setitimer .llong .compat_sys_getitimer /* 105 */ - .llong .sys32_newstat - .llong .sys32_newlstat - .llong .sys32_newfstat + .llong .compat_sys_newstat + .llong .compat_sys_newlstat + .llong .compat_sys_newfstat .llong .sys_uname .llong .sys_ni_syscall /* 110 old iopl syscall */ .llong .sys_vhangup diff --git a/arch/ppc64/kernel/pSeries_pci.c b/arch/ppc64/kernel/pSeries_pci.c index 2796e420aaf1..df3609a8c019 100644 --- a/arch/ppc64/kernel/pSeries_pci.c +++ b/arch/ppc64/kernel/pSeries_pci.c @@ -40,7 +40,6 @@ #include <asm/naca.h> #include <asm/pci_dma.h> -#include "xics.h" #include "open_pic.h" #include "pci.h" @@ -402,7 +401,7 @@ alloc_phb(struct device_node *dev, char *model, unsigned int addr_size_words) * Python ***************************************************************/ if (strstr(model, "Python")) { - unsigned long chip_regs; + void *chip_regs; volatile u32 *tmp, i; PPCDBG(PPCDBG_PHBINIT, "\tCreate python\n"); @@ -608,10 +607,6 @@ pSeries_pcibios_fixup(void) pci_read_irq_line(dev); PPCDBGCALL(PPCDBG_PHBINIT, dumpPci_Dev(dev) ); } - - if (naca->interrupt_controller == IC_PPC_XIC) { - xics_isa_init(); - } } /*********************************************************************** diff --git a/arch/ppc64/kernel/pci_dma.c b/arch/ppc64/kernel/pci_dma.c index d127758c8401..ac815895bf2a 100644 --- a/arch/ppc64/kernel/pci_dma.c +++ b/arch/ppc64/kernel/pci_dma.c @@ -147,6 +147,7 @@ static unsigned long __inline__ count_leading_zeros64( unsigned long x ) return lz; } +#ifdef CONFIG_PPC_ISERIES static void tce_build_iSeries(struct TceTable *tbl, long tcenum, unsigned long uaddr, int direction ) { @@ -180,7 +181,9 @@ static void tce_build_iSeries(struct TceTable *tbl, long tcenum, panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx\n", setTceRc); } } +#endif +#ifdef CONFIG_PPC_PSERIES static void tce_build_pSeries(struct TceTable *tbl, long tcenum, unsigned long uaddr, int direction ) { @@ -199,8 +202,8 @@ static void tce_build_pSeries(struct TceTable *tbl, long tcenum, tce_addr = ((union Tce *)tbl->base) + tcenum; *tce_addr = (union Tce)tce.wholeTce; - } +#endif /* * Build a TceTable structure. This contains a multi-level bit map which @@ -548,6 +551,7 @@ static inline dma_addr_t get_tces( struct TceTable *tbl, unsigned order, void *p return retTce; } +#ifdef CONFIG_PPC_ISERIES static void tce_free_one_iSeries( struct TceTable *tbl, long tcenum ) { u64 set_tce_rc; @@ -560,7 +564,9 @@ static void tce_free_one_iSeries( struct TceTable *tbl, long tcenum ) panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx\n", set_tce_rc); } +#endif +#ifdef CONFIG_PPC_PSERIES static void tce_free_one_pSeries( struct TceTable *tbl, long tcenum ) { union Tce tce; @@ -572,6 +578,7 @@ static void tce_free_one_pSeries( struct TceTable *tbl, long tcenum ) *tce_addr = (union Tce)tce.wholeTce; } +#endif static void tce_free(struct TceTable *tbl, dma_addr_t dma_addr, unsigned order, unsigned num_pages) @@ -609,6 +616,7 @@ static void tce_free(struct TceTable *tbl, dma_addr_t dma_addr, free_tce_range( tbl, free_tce, order ); } +#ifdef CONFIG_PPC_ISERIES void __init create_virtual_bus_tce_table(void) { struct TceTable *t; @@ -661,6 +669,7 @@ void __init create_virtual_bus_tce_table(void) } else printk( "Virtual Bus VIO TCE table failed.\n"); } +#endif void create_tce_tables_for_buses(struct list_head *bus_list) { @@ -842,6 +851,7 @@ static struct TceTable* findHwTceTable(struct TceTable * newTceTable ) static void getTceTableParmsiSeries(struct iSeries_Device_Node* DevNode, struct TceTable* newTceTable ) { +#ifdef CONFIG_PPC_ISERIES struct TceTableManagerCB* pciBusTceTableParms = (struct TceTableManagerCB*)kmalloc( sizeof(struct TceTableManagerCB), GFP_KERNEL ); if(pciBusTceTableParms == NULL) panic("PCI_DMA: TCE Table Allocation failed."); @@ -872,6 +882,7 @@ static void getTceTableParmsiSeries(struct iSeries_Device_Node* DevNode, newTceTable->tceType = TCE_PCI; kfree(pciBusTceTableParms); +#endif } static void getTceTableParmsPSeries(struct pci_controller *phb, @@ -1440,15 +1451,19 @@ void pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, } #endif +#ifdef CONFIG_PPC_PSERIES /* These are called very early. */ void tce_init_pSeries(void) { ppc_md.tce_build = tce_build_pSeries; ppc_md.tce_free_one = tce_free_one_pSeries; } +#endif +#ifdef CONFIG_PPC_ISERIES void tce_init_iSeries(void) { ppc_md.tce_build = tce_build_iSeries; ppc_md.tce_free_one = tce_free_one_iSeries; } +#endif diff --git a/arch/ppc64/kernel/prom.c b/arch/ppc64/kernel/prom.c index 764ecb508ca7..ebde1f0c2920 100644 --- a/arch/ppc64/kernel/prom.c +++ b/arch/ppc64/kernel/prom.c @@ -16,10 +16,6 @@ */ #if 0 -#define DEBUG_YABOOT -#endif - -#if 0 #define DEBUG_PROM #endif @@ -32,22 +28,6 @@ #include <linux/threads.h> #include <linux/spinlock.h> #include <linux/blk.h> - -#ifdef DEBUG_YABOOT -#define call_yaboot(FUNC,...) \ - do { \ - if (FUNC) { \ - struct prom_t *_prom = PTRRELOC(&prom); \ - unsigned long prom_entry = _prom->entry;\ - _prom->entry = (unsigned long)(FUNC); \ - enter_prom(__VA_ARGS__); \ - _prom->entry = prom_entry; \ - } \ - } while (0) -#else -#define call_yaboot(FUNC,...) do { ; } while (0) -#endif - #include <linux/types.h> #include <linux/pci.h> #include <asm/prom.h> @@ -65,16 +45,14 @@ #include <asm/bitops.h> #include <asm/naca.h> #include <asm/pci.h> -#include "open_pic.h" #include <asm/bootinfo.h> #include <asm/ppcdebug.h> +#include "open_pic.h" #ifdef CONFIG_FB #include <asm/linux_logo.h> #endif -extern char _end[]; - /* * prom_init() is called very early on, before the kernel text * and data have been mapped to KERNELBASE. At this point the code @@ -131,12 +109,7 @@ struct pci_intr_map { typedef unsigned long interpret_func(struct device_node *, unsigned long, int, int); -#if 0 static interpret_func interpret_pci_props; -#endif -static unsigned long interpret_pci_props(struct device_node *, unsigned long, - int, int); - static interpret_func interpret_isa_props; static interpret_func interpret_root_props; @@ -156,9 +129,6 @@ struct prom_t prom = { 0, /* version */ 32, /* encode_phys_size */ 0 /* bi_rec pointer */ -#ifdef DEBUG_YABOOT - ,NULL /* yaboot */ -#endif }; @@ -170,9 +140,6 @@ extern struct rtas_t rtas; extern unsigned long klimit; extern unsigned long embedded_sysmap_end; extern struct lmb lmb; -#ifdef CONFIG_MSCHUNKS -extern struct msChunks msChunks; -#endif /* CONFIG_MSCHUNKS */ #define MAX_PHB 16 * 3 // 16 Towers * 3 PHBs/tower struct _of_tce_table of_tce_table[MAX_PHB + 1] = {{0, 0, 0}}; @@ -203,12 +170,6 @@ static struct bi_record * prom_bi_rec_verify(struct bi_record *); static unsigned long prom_bi_rec_reserve(unsigned long); static struct device_node *find_phandle(phandle); -#ifdef CONFIG_MSCHUNKS -static unsigned long prom_initialize_mschunks(unsigned long); -#ifdef DEBUG_PROM -void prom_dump_mschunks_mapping(void); -#endif /* DEBUG_PROM */ -#endif /* CONFIG_MSCHUNKS */ #ifdef DEBUG_PROM void prom_dump_lmb(void); #endif @@ -217,8 +178,6 @@ extern unsigned long reloc_offset(void); extern void enter_prom(void *dummy,...); -void cacheable_memzero(void *, unsigned int); - extern char cmd_line[512]; /* XXX */ unsigned long dev_tree_size; @@ -545,20 +504,6 @@ prom_initialize_lmb(unsigned long mem) unsigned long lmb_base, lmb_size; unsigned long num_regs, bytes_per_reg = (_prom->encode_phys_size*2)/8; -#ifdef CONFIG_MSCHUNKS - unsigned long max_addr = 0; -#if 1 - /* Fix me: 630 3G-4G IO hack here... -Peter (PPPBBB) */ - unsigned long io_base = 3UL<<30; - unsigned long io_size = 1UL<<30; - unsigned long have_630 = 1; /* assume we have a 630 */ - -#else - unsigned long io_base = <real io base here>; - unsigned long io_size = <real io size here>; -#endif -#endif /* CONFIG_MSCHUNKS */ - lmb_init(); for (node = 0; prom_next_node(&node); ) { @@ -581,42 +526,17 @@ prom_initialize_lmb(unsigned long mem) lmb_size = reg.addr64[i].size; } -#ifdef CONFIG_MSCHUNKS - if ( lmb_addrs_overlap(lmb_base,lmb_size, - io_base,io_size) ) { - /* If we really have dram here, then we don't - * have a 630! -Peter - */ - have_630 = 0; - } -#endif /* CONFIG_MSCHUNKS */ if ( lmb_add(lmb_base, lmb_size) < 0 ) prom_print(RELOC("Too many LMB's, discarding this one...\n")); -#ifdef CONFIG_MSCHUNKS - else if ( max_addr < (lmb_base+lmb_size-1) ) - max_addr = lmb_base+lmb_size-1; -#endif /* CONFIG_MSCHUNKS */ } } -#ifdef CONFIG_MSCHUNKS - if ( have_630 && lmb_addrs_overlap(0,max_addr,io_base,io_size) ) - lmb_add_io(io_base, io_size); -#endif /* CONFIG_MSCHUNKS */ - lmb_analyze(); #ifdef DEBUG_PROM prom_dump_lmb(); #endif /* DEBUG_PROM */ -#ifdef CONFIG_MSCHUNKS - mem = prom_initialize_mschunks(mem); -#ifdef DEBUG_PROM - prom_dump_mschunks_mapping(); -#endif /* DEBUG_PROM */ -#endif /* CONFIG_MSCHUNKS */ - return mem; } @@ -718,96 +638,6 @@ unsigned long prom_strtoul(const char *cp) return result; } - -#ifdef CONFIG_MSCHUNKS -static unsigned long -prom_initialize_mschunks(unsigned long mem) -{ - unsigned long offset = reloc_offset(); - struct lmb *_lmb = PTRRELOC(&lmb); - struct msChunks *_msChunks = PTRRELOC(&msChunks); - unsigned long i, pchunk = 0; - unsigned long addr_range = _lmb->memory.size + _lmb->memory.iosize; - unsigned long chunk_size = _lmb->memory.lcd_size; - - - mem = msChunks_alloc(mem, addr_range / chunk_size, chunk_size); - - /* First create phys -> abs mapping for memory/dram */ - for (i=0; i < _lmb->memory.cnt ;i++) { - unsigned long base = _lmb->memory.region[i].base; - unsigned long size = _lmb->memory.region[i].size; - unsigned long achunk = addr_to_chunk(base); - unsigned long end_achunk = addr_to_chunk(base+size); - - if(_lmb->memory.region[i].type != LMB_MEMORY_AREA) - continue; - - _lmb->memory.region[i].physbase = chunk_to_addr(pchunk); - for (; achunk < end_achunk ;) { - PTRRELOC(_msChunks->abs)[pchunk++] = achunk++; - } - } - -#ifdef CONFIG_MSCHUNKS - /* Now create phys -> abs mapping for IO */ - for (i=0; i < _lmb->memory.cnt ;i++) { - unsigned long base = _lmb->memory.region[i].base; - unsigned long size = _lmb->memory.region[i].size; - unsigned long achunk = addr_to_chunk(base); - unsigned long end_achunk = addr_to_chunk(base+size); - - if(_lmb->memory.region[i].type != LMB_IO_AREA) - continue; - - _lmb->memory.region[i].physbase = chunk_to_addr(pchunk); - for (; achunk < end_achunk ;) { - PTRRELOC(_msChunks->abs)[pchunk++] = achunk++; - } - } -#endif /* CONFIG_MSCHUNKS */ - - return mem; -} - -#ifdef DEBUG_PROM -void -prom_dump_mschunks_mapping(void) -{ - unsigned long offset = reloc_offset(); - struct msChunks *_msChunks = PTRRELOC(&msChunks); - unsigned long chunk; - - prom_print(RELOC("\nprom_dump_mschunks_mapping:\n")); - prom_print(RELOC(" msChunks.num_chunks = 0x")); - prom_print_hex(_msChunks->num_chunks); - prom_print_nl(); - prom_print(RELOC(" msChunks.chunk_size = 0x")); - prom_print_hex(_msChunks->chunk_size); - prom_print_nl(); - prom_print(RELOC(" msChunks.chunk_shift = 0x")); - prom_print_hex(_msChunks->chunk_shift); - prom_print_nl(); - prom_print(RELOC(" msChunks.chunk_mask = 0x")); - prom_print_hex(_msChunks->chunk_mask); - prom_print_nl(); - prom_print(RELOC(" msChunks.abs = 0x")); - prom_print_hex(_msChunks->abs); - prom_print_nl(); - - prom_print(RELOC(" msChunks mapping:\n")); - for(chunk=0; chunk < _msChunks->num_chunks ;chunk++) { - prom_print(RELOC(" phys 0x")); - prom_print_hex(chunk); - prom_print(RELOC(" -> abs 0x")); - prom_print_hex(PTRRELOC(_msChunks->abs)[chunk]); - prom_print_nl(); - } - -} -#endif /* DEBUG_PROM */ -#endif /* CONFIG_MSCHUNKS */ - #ifdef DEBUG_PROM void prom_dump_lmb(void) @@ -1213,26 +1043,28 @@ prom_hold_cpus(unsigned long mem) unsigned long __init prom_init(unsigned long r3, unsigned long r4, unsigned long pp, - unsigned long r6, unsigned long r7, yaboot_debug_t *yaboot) + unsigned long r6, unsigned long r7) { - int chrp = 0; unsigned long mem; - ihandle prom_mmu, prom_op, prom_root, prom_cpu; + ihandle prom_root, prom_cpu; phandle cpu_pkg; unsigned long offset = reloc_offset(); long l; char *p, *d; unsigned long phys; u32 getprop_rval; - struct naca_struct *_naca = RELOC(naca); + struct naca_struct *_naca = RELOC(naca); struct paca_struct *_xPaca = PTRRELOC(&paca[0]); struct prom_t *_prom = PTRRELOC(&prom); /* Default machine type. */ _naca->platform = PLATFORM_PSERIES; + +#if 0 /* Reset klimit to take into account the embedded system map */ if (RELOC(embedded_sysmap_end)) RELOC(klimit) = __va(PAGE_ALIGN(RELOC(embedded_sysmap_end))); +#endif /* Get a handle to the prom entry point before anything else */ _prom->entry = pp; @@ -1241,33 +1073,10 @@ prom_init(unsigned long r3, unsigned long r4, unsigned long pp, RELOC(klimit) = PTRUNRELOC((unsigned long)_prom->bi_recs + _prom->bi_recs->data[1]); } -#ifdef DEBUG_YABOOT - call_yaboot(yaboot->dummy,offset>>32,offset&0xffffffff); - call_yaboot(yaboot->printf, RELOC("offset = 0x%08x%08x\n"), LONG_MSW(offset), LONG_LSW(offset)); -#endif - - /* Default */ - phys = KERNELBASE - offset; - -#ifdef DEBUG_YABOOT - call_yaboot(yaboot->printf, RELOC("phys = 0x%08x%08x\n"), LONG_MSW(phys), LONG_LSW(phys)); -#endif - - -#ifdef DEBUG_YABOOT - _prom->yaboot = yaboot; - call_yaboot(yaboot->printf, RELOC("pp = 0x%08x%08x\n"), LONG_MSW(pp), LONG_LSW(pp)); - call_yaboot(yaboot->printf, RELOC("prom = 0x%08x%08x\n"), LONG_MSW(_prom->entry), LONG_LSW(_prom->entry)); -#endif - /* First get a handle for the stdout device */ _prom->chosen = (ihandle)call_prom(RELOC("finddevice"), 1, 1, RELOC("/chosen")); -#ifdef DEBUG_YABOOT - call_yaboot(yaboot->printf, RELOC("prom->chosen = 0x%08x%08x\n"), LONG_MSW(_prom->chosen), LONG_LSW(_prom->chosen)); -#endif - if ((long)_prom->chosen <= 0) prom_exit(); @@ -1278,22 +1087,7 @@ prom_init(unsigned long r3, unsigned long r4, unsigned long pp, _prom->stdout = (ihandle)(unsigned long)getprop_rval; -#ifdef DEBUG_YABOOT - if (_prom->stdout == 0) { - call_yaboot(yaboot->printf, RELOC("prom->stdout = 0x%08x%08x\n"), LONG_MSW(_prom->stdout), LONG_LSW(_prom->stdout)); - } - - call_yaboot(yaboot->printf, RELOC("prom->stdout = 0x%08x%08x\n"), LONG_MSW(_prom->stdout), LONG_LSW(_prom->stdout)); -#endif - -#ifdef DEBUG_YABOOT - call_yaboot(yaboot->printf, RELOC("Location: 0x11\n")); -#endif - mem = RELOC(klimit) - offset; -#ifdef DEBUG_YABOOT - call_yaboot(yaboot->printf, RELOC("Location: 0x11b\n")); -#endif /* Get the full OF pathname of the stdout device */ p = (char *) mem; @@ -1311,34 +1105,6 @@ prom_init(unsigned long r3, unsigned long r4, unsigned long pp, } _prom->encode_phys_size = (getprop_rval==1) ? 32 : 64; -#ifdef DEBUG_PROM - prom_print(RELOC("DRENG: Detect OF version...\n")); -#endif - /* Find the OF version */ - prom_op = (ihandle)call_prom(RELOC("finddevice"), 1, 1, RELOC("/openprom")); - if (prom_op != (ihandle)-1) { - char model[64]; - long sz; - sz = (long)call_prom(RELOC("getprop"), 4, 1, prom_op, - RELOC("model"), model, 64); - if (sz > 0) { - char *c; - /* hack to skip the ibm chrp firmware # */ - if ( strncmp(model,RELOC("IBM"),3) ) { - for (c = model; *c; c++) - if (*c >= '0' && *c <= '9') { - _prom->version = *c - '0'; - break; - } - } - else - chrp = 1; - } - } - if (_prom->version >= 3) - prom_print(RELOC("OF Version 3 detected.\n")); - - /* Determine which cpu is actually running right _now_ */ if ((long)call_prom(RELOC("getprop"), 4, 1, _prom->chosen, RELOC("cpu"), &getprop_rval, @@ -1408,35 +1174,9 @@ prom_init(unsigned long r3, unsigned long r4, unsigned long pp, if (_naca->platform == PLATFORM_PSERIES) prom_initialize_tce_table(); - if ((long) call_prom(RELOC("getprop"), 4, 1, - _prom->chosen, - RELOC("mmu"), - &getprop_rval, - sizeof(getprop_rval)) <= 0) { - prom_print(RELOC(" no MMU found\n")); - prom_exit(); - } - - /* We assume the phys. address size is 3 cells */ - RELOC(prom_mmu) = (ihandle)(unsigned long)getprop_rval; - - if ((long)call_prom(RELOC("call-method"), 4, 4, - RELOC("translate"), - prom_mmu, - (void *)(KERNELBASE - offset), - (void *)1) != 0) { - prom_print(RELOC(" (translate failed) ")); - } else { - prom_print(RELOC(" (translate ok) ")); - phys = (unsigned long)_prom->args.rets[3]; - } - - /* If OpenFirmware version >= 3, then use quiesce call */ - if (_prom->version >= 3) { - prom_print(RELOC("Calling quiesce ...\n")); - call_prom(RELOC("quiesce"), 0, 0); - phys = KERNELBASE - offset; - } + prom_print(RELOC("Calling quiesce ...\n")); + call_prom(RELOC("quiesce"), 0, 0); + phys = KERNELBASE - offset; prom_print(RELOC("returning from prom_init\n")); return phys; @@ -1527,14 +1267,14 @@ check_display(unsigned long mem) RELOC(default_colors)[i*3+2]) != 0) break; -#ifdef CONFIG_FB +#ifdef CONFIG_FRAMEBUFFER_CONSOLE for (i = 0; i < LINUX_LOGO_COLORS; i++) if (prom_set_color(ih, i + 32, RELOC(linux_logo_red)[i], RELOC(linux_logo_green)[i], RELOC(linux_logo_blue)[i]) != 0) break; -#endif /* CONFIG_FB */ +#endif /* CONFIG_FRAMEBUFFER_CONSOLE */ /* * If this display is the device that OF is using for stdout, diff --git a/arch/ppc64/kernel/rtc.c b/arch/ppc64/kernel/rtc.c index c0f714551a0d..4dce1e9e74f2 100644 --- a/arch/ppc64/kernel/rtc.c +++ b/arch/ppc64/kernel/rtc.c @@ -258,6 +258,7 @@ static int rtc_read_proc(char *page, char **start, off_t off, return len; } +#ifdef CONFIG_PPC_ISERIES /* * Get the RTC from the virtual service processor * This requires flowing LpEvents to the primary partition @@ -271,60 +272,6 @@ void iSeries_get_rtc_time(struct rtc_time *rtc_tm) rtc_tm->tm_mon--; } - -void pSeries_get_rtc_time(struct rtc_time *rtc_tm) -{ - unsigned long ret[8]; - int error; - int count; - - /* - * error -2 is clock busy, we keep retrying a few times to see - * if it will come good -- paulus - */ - count = 0; - do { - error = rtas_call(rtas_token("get-time-of-day"), 0, 8, (void *)&ret); - } while (error == -2 && ++count < 1000); - - if (error != 0) { - printk(KERN_WARNING "error: reading the clock failed (%d)\n", - error); - return; - } - - rtc_tm->tm_sec = ret[5]; - rtc_tm->tm_min = ret[4]; - rtc_tm->tm_hour = ret[3]; - rtc_tm->tm_mday = ret[2]; - rtc_tm->tm_mon = ret[1] - 1; - rtc_tm->tm_year = ret[0] - 1900; -} - -int pSeries_set_rtc_time(struct rtc_time *tm) -{ - int error; - int count; - - /* - * error -2 is clock busy, we keep retrying a few times to see - * if it will come good -- paulus - */ - count = 0; - do { - error = rtas_call(rtas_token("set-time-of-day"), 7, 1, NULL, - tm->tm_year + 1900, tm->tm_mon + 1, - tm->tm_mday, tm->tm_hour, tm->tm_min, - tm->tm_sec, 0); - } while (error == -2 && ++count < 1000); - - if (error != 0) - printk(KERN_WARNING "error: setting the clock failed (%d)\n", - error); - - return 0; -} - /* * Set the RTC in the virtual service processor * This requires flowing LpEvents to the primary partition @@ -380,3 +327,59 @@ void iSeries_get_boot_time(struct rtc_time *tm) tm->tm_year -= 1900; tm->tm_mon -= 1; } +#endif + +#ifdef CONFIG_PPC_PSERIES +void pSeries_get_rtc_time(struct rtc_time *rtc_tm) +{ + unsigned long ret[8]; + int error; + int count; + + /* + * error -2 is clock busy, we keep retrying a few times to see + * if it will come good -- paulus + */ + count = 0; + do { + error = rtas_call(rtas_token("get-time-of-day"), 0, 8, (void *)&ret); + } while (error == -2 && ++count < 1000); + + if (error != 0) { + printk(KERN_WARNING "error: reading the clock failed (%d)\n", + error); + return; + } + + rtc_tm->tm_sec = ret[5]; + rtc_tm->tm_min = ret[4]; + rtc_tm->tm_hour = ret[3]; + rtc_tm->tm_mday = ret[2]; + rtc_tm->tm_mon = ret[1] - 1; + rtc_tm->tm_year = ret[0] - 1900; +} + +int pSeries_set_rtc_time(struct rtc_time *tm) +{ + int error; + int count; + + /* + * error -2 is clock busy, we keep retrying a few times to see + * if it will come good -- paulus + */ + count = 0; + do { + error = rtas_call(rtas_token("set-time-of-day"), 7, 1, NULL, + tm->tm_year + 1900, tm->tm_mon + 1, + tm->tm_mday, tm->tm_hour, tm->tm_min, + tm->tm_sec, 0); + } while (error == -2 && ++count < 1000); + + if (error != 0) + printk(KERN_WARNING "error: setting the clock failed (%d)\n", + error); + + return 0; +} +#endif diff --git a/arch/ppc64/kernel/setup.c b/arch/ppc64/kernel/setup.c index 38b1c3c64b3f..2472fcc916e4 100644 --- a/arch/ppc64/kernel/setup.c +++ b/arch/ppc64/kernel/setup.c @@ -153,14 +153,18 @@ void setup_system(unsigned long r3, unsigned long r4, unsigned long r5, debugger_dabr_match = xmon_dabr_match; #endif +#ifdef CONFIG_PPC_ISERIES /* pSeries systems are identified in prom.c via OF. */ if ( itLpNaca.xLparInstalled == 1 ) naca->platform = PLATFORM_ISERIES_LPAR; +#endif switch (naca->platform) { +#ifdef CONFIG_PPC_ISERIES case PLATFORM_ISERIES_LPAR: iSeries_init_early(); break; +#endif #ifdef CONFIG_PPC_PSERIES case PLATFORM_PSERIES: @@ -215,9 +219,11 @@ void setup_system(unsigned long r3, unsigned long r4, unsigned long r5, mm_init_ppc64(); switch (naca->platform) { +#ifdef CONFIG_PPC_ISERIES case PLATFORM_ISERIES_LPAR: iSeries_init(); break; +#endif default: /* The following relies on the device tree being */ /* fully configured. */ diff --git a/arch/ppc64/kernel/smp.c b/arch/ppc64/kernel/smp.c index eeae9cb81e58..e7b656651e4c 100644 --- a/arch/ppc64/kernel/smp.c +++ b/arch/ppc64/kernel/smp.c @@ -56,7 +56,7 @@ unsigned long cpu_online_map = 0; static struct smp_ops_t *smp_ops; -volatile unsigned long cpu_callin_map[NR_CPUS]; +volatile unsigned int cpu_callin_map[NR_CPUS]; extern unsigned char stab_array[]; @@ -86,6 +86,7 @@ static inline void set_tb(unsigned int upper, unsigned int lower) mttbl(lower); } +#ifdef CONFIG_PPC_ISERIES void iSeries_smp_message_recv( struct pt_regs * regs ) { int cpu = smp_processor_id(); @@ -117,7 +118,6 @@ static void smp_iSeries_message_pass(int target, int msg, unsigned long data, in } } -#ifdef CONFIG_PPC_ISERIES static int smp_iSeries_numProcs(void) { unsigned np, i; @@ -132,7 +132,6 @@ static int smp_iSeries_numProcs(void) } return np; } -#endif static int smp_iSeries_probe(void) { @@ -189,13 +188,12 @@ void __init smp_init_iSeries(void) smp_ops->probe = smp_iSeries_probe; smp_ops->kick_cpu = smp_iSeries_kick_cpu; smp_ops->setup_cpu = smp_iSeries_setup_cpu; -#ifdef CONFIG_PPC_ISERIES #warning fix for iseries naca->processorCount = smp_iSeries_numProcs(); -#endif } +#endif - +#ifdef CONFIG_PPC_PSERIES static void smp_openpic_message_pass(int target, int msg, unsigned long data, int wait) { @@ -257,6 +255,7 @@ smp_kick_cpu(int nr) */ paca[nr].xProcStart = 1; } +#endif static void __init smp_space_timers(unsigned int max_cpus) { @@ -273,6 +272,7 @@ static void __init smp_space_timers(unsigned int max_cpus) } } +#ifdef CONFIG_PPC_PSERIES static void __devinit pSeries_setup_cpu(int cpu) { if (OpenPIC_Addr) { @@ -361,6 +361,7 @@ void __init smp_init_pSeries(void) smp_ops->kick_cpu = smp_kick_cpu; smp_ops->setup_cpu = pSeries_setup_cpu; } +#endif void smp_local_timer_interrupt(struct pt_regs * regs) { @@ -563,26 +564,8 @@ void __init smp_prepare_cpus(unsigned int max_cpus) /* Fixup boot cpu */ smp_store_cpu_info(smp_processor_id()); cpu_callin_map[smp_processor_id()] = 1; - - for (i = 0; i < NR_CPUS; i++) { - paca[i].prof_counter = 1; - paca[i].prof_multiplier = 1; - if (i != boot_cpuid) { - void *tmp; - /* - * the boot cpu segment table is statically - * initialized to real address 0x5000. The - * Other processor's tables are created and - * initialized here. - */ - tmp = &stab_array[PAGE_SIZE * (i-1)]; - memset(tmp, 0, PAGE_SIZE); - paca[i].xStab_data.virt = (unsigned long)tmp; - paca[i].xStab_data.real = (unsigned long)__v2a(tmp); - paca[i].default_decr = tb_ticks_per_jiffy / - decr_overclock; - } - } + paca[smp_processor_id()].prof_counter = 1; + paca[smp_processor_id()].prof_multiplier = 1; /* * XXX very rough. @@ -616,6 +599,23 @@ int __devinit __cpu_up(unsigned int cpu) struct task_struct *p; int c; + paca[cpu].prof_counter = 1; + paca[cpu].prof_multiplier = 1; + paca[cpu].default_decr = tb_ticks_per_jiffy / decr_overclock; + + if (!cpu_has_slb()) { + void *tmp; + + /* maximum of 48 CPUs on machines with a segment table */ + if (cpu >= 48) + BUG(); + + tmp = &stab_array[PAGE_SIZE * cpu]; + memset(tmp, 0, PAGE_SIZE); + paca[cpu].xStab_data.virt = (unsigned long)tmp; + paca[cpu].xStab_data.real = (unsigned long)__v2a(tmp); + } + /* create a process for the processor */ /* only regs.msr is actually used, and 0 is OK for it */ memset(®s, 0, sizeof(struct pt_regs)); diff --git a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c index 57c86dc1f4e3..625b4676d043 100644 --- a/arch/ppc64/kernel/sys_ppc32.c +++ b/arch/ppc64/kernel/sys_ppc32.c @@ -300,16 +300,16 @@ asmlinkage long sys32_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg struct ncp_mount_data32_v3 { int version; unsigned int ncp_fd; - __kernel_uid_t32 mounted_uid; - __kernel_pid_t32 wdog_pid; + compat_uid_t mounted_uid; + compat_pid_t wdog_pid; unsigned char mounted_vol[NCP_VOLNAME_LEN + 1]; unsigned int time_out; unsigned int retry_count; unsigned int flags; - __kernel_uid_t32 uid; - __kernel_gid_t32 gid; - __kernel_mode_t32 file_mode; - __kernel_mode_t32 dir_mode; + compat_uid_t uid; + compat_gid_t gid; + compat_mode_t file_mode; + compat_mode_t dir_mode; }; struct ncp_mount_data32_v4 { @@ -380,11 +380,11 @@ static void *do_ncp_super_data_conv(void *raw_data) struct smb_mount_data32 { int version; - __kernel_uid_t32 mounted_uid; - __kernel_uid_t32 uid; - __kernel_gid_t32 gid; - __kernel_mode_t32 file_mode; - __kernel_mode_t32 dir_mode; + compat_uid_t mounted_uid; + compat_uid_t uid; + compat_gid_t gid; + compat_mode_t file_mode; + compat_mode_t dir_mode; }; static void *do_smb_super_data_conv(void *raw_data) @@ -802,10 +802,13 @@ asmlinkage int ppc32_select(u32 n, u32* inp, u32* outp, u32* exp, u32 tvp_x) return sys32_select((int)n, inp, outp, exp, tvp_x); } -static int cp_new_stat32(struct kstat *stat, struct stat32 *statbuf) +int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf) { int err; + if (stat->size > MAX_NON_LFS) + return -EOVERFLOW; + err = put_user(stat->dev, &statbuf->st_dev); err |= put_user(stat->ino, &statbuf->st_ino); err |= put_user(stat->mode, &statbuf->st_mode); @@ -813,8 +816,6 @@ static int cp_new_stat32(struct kstat *stat, struct stat32 *statbuf) err |= put_user(stat->uid, &statbuf->st_uid); err |= put_user(stat->gid, &statbuf->st_gid); err |= put_user(stat->rdev, &statbuf->st_rdev); - if (stat->size > MAX_NON_LFS) - return -EOVERFLOW; err |= put_user(stat->size, &statbuf->st_size); err |= put_user(stat->atime.tv_sec, &statbuf->st_atime); err |= put_user(0, &statbuf->__unused1); @@ -830,39 +831,6 @@ static int cp_new_stat32(struct kstat *stat, struct stat32 *statbuf) return err; } -asmlinkage long sys32_newstat(char* filename, struct stat32* statbuf) -{ - struct kstat stat; - int error = vfs_stat(filename, &stat); - - if (!error) - error = cp_new_stat32(&stat, statbuf); - - return error; -} - -asmlinkage long sys32_newlstat(char * filename, struct stat32 *statbuf) -{ - struct kstat stat; - int error = vfs_lstat(filename, &stat); - - if (!error) - error = cp_new_stat32(&stat, statbuf); - - return error; -} - -asmlinkage long sys32_newfstat(unsigned int fd, struct stat32 *statbuf) -{ - struct kstat stat; - int error = vfs_fstat(fd, &stat); - - if (!error) - error = cp_new_stat32(&stat, statbuf); - - return error; -} - static inline int put_statfs (struct statfs32 *ubuf, struct statfs *kbuf) { int err; @@ -1492,27 +1460,27 @@ struct nfsctl_client32 { struct nfsctl_export32 { s8 ex32_client[NFSCLNT_IDMAX+1]; s8 ex32_path[NFS_MAXPATHLEN+1]; - __kernel_dev_t32 ex32_dev; - __kernel_ino_t32 ex32_ino; + compat_dev_t ex32_dev; + compat_ino_t ex32_ino; s32 ex32_flags; - __kernel_uid_t32 ex32_anon_uid; - __kernel_gid_t32 ex32_anon_gid; + compat_uid_t ex32_anon_uid; + compat_gid_t ex32_anon_gid; }; struct nfsctl_uidmap32 { u32 ug32_ident; /* char * */ - __kernel_uid_t32 ug32_uidbase; + compat_uid_t ug32_uidbase; s32 ug32_uidlen; u32 ug32_udimap; /* uid_t * */ - __kernel_uid_t32 ug32_gidbase; + compat_uid_t ug32_gidbase; s32 ug32_gidlen; u32 ug32_gdimap; /* gid_t * */ }; struct nfsctl_fhparm32 { struct sockaddr gf32_addr; - __kernel_dev_t32 gf32_dev; - __kernel_ino_t32 gf32_ino; + compat_dev_t gf32_dev; + compat_ino_t gf32_ino; s32 gf32_version; }; @@ -1645,7 +1613,7 @@ static int nfs_uud32_trans(struct nfsctl_arg *karg, struct nfsctl_arg32 *arg32) return -ENOMEM; for(i = 0; i < karg->ca_umap.ug_uidlen; i++) err |= __get_user(karg->ca_umap.ug_udimap[i], - &(((__kernel_uid_t32 *)A(uaddr))[i])); + &(((compat_uid_t *)A(uaddr))[i])); err |= __get_user(karg->ca_umap.ug_gidbase, &arg32->ca32_umap.ug32_gidbase); err |= __get_user(karg->ca_umap.ug_uidlen, @@ -1659,7 +1627,7 @@ static int nfs_uud32_trans(struct nfsctl_arg *karg, struct nfsctl_arg32 *arg32) return -ENOMEM; for(i = 0; i < karg->ca_umap.ug_gidlen; i++) err |= __get_user(karg->ca_umap.ug_gdimap[i], - &(((__kernel_gid_t32 *)A(uaddr))[i])); + &(((compat_gid_t *)A(uaddr))[i])); return err; } @@ -2076,37 +2044,6 @@ asmlinkage long sys32_settimeofday(struct compat_timeval *tv, struct timezone *t } -struct tms32 { - __kernel_clock_t32 tms_utime; - __kernel_clock_t32 tms_stime; - __kernel_clock_t32 tms_cutime; - __kernel_clock_t32 tms_cstime; -}; - -extern asmlinkage long sys_times(struct tms * tbuf); - -asmlinkage long sys32_times(struct tms32 *tbuf) -{ - struct tms t; - long ret; - mm_segment_t old_fs = get_fs (); - int err; - - set_fs (KERNEL_DS); - ret = sys_times(tbuf ? &t : NULL); - set_fs (old_fs); - if (tbuf) { - err = put_user (t.tms_utime, &tbuf->tms_utime); - err |= __put_user (t.tms_stime, &tbuf->tms_stime); - err |= __put_user (t.tms_cutime, &tbuf->tms_cutime); - err |= __put_user (t.tms_cstime, &tbuf->tms_cstime); - if (err) - ret = -EFAULT; - } - - return ret; -} - struct msgbuf32 { s32 mtype; char mtext[1]; }; struct semid_ds32 { @@ -2144,8 +2081,8 @@ struct msqid_ds32 unsigned short msg_cbytes; unsigned short msg_qnum; unsigned short msg_qbytes; - __kernel_ipc_pid_t32 msg_lspid; - __kernel_ipc_pid_t32 msg_lrpid; + compat_ipc_pid_t msg_lspid; + compat_ipc_pid_t msg_lrpid; }; struct msqid64_ds32 { @@ -2159,8 +2096,8 @@ struct msqid64_ds32 { unsigned int msg_cbytes; unsigned int msg_qnum; unsigned int msg_qbytes; - __kernel_pid_t32 msg_lspid; - __kernel_pid_t32 msg_lrpid; + compat_pid_t msg_lspid; + compat_pid_t msg_lrpid; unsigned int __unused4; unsigned int __unused5; }; @@ -2171,8 +2108,8 @@ struct shmid_ds32 { compat_time_t shm_atime; compat_time_t shm_dtime; compat_time_t shm_ctime; - __kernel_ipc_pid_t32 shm_cpid; - __kernel_ipc_pid_t32 shm_lpid; + compat_ipc_pid_t shm_cpid; + compat_ipc_pid_t shm_lpid; unsigned short shm_nattch; unsigned short __unused; unsigned int __unused2; @@ -2189,8 +2126,8 @@ struct shmid64_ds32 { compat_time_t shm_ctime; unsigned int __unused4; compat_size_t shm_segsz; - __kernel_pid_t32 shm_cpid; - __kernel_pid_t32 shm_lpid; + compat_pid_t shm_cpid; + compat_pid_t shm_lpid; unsigned int shm_nattch; unsigned int __unused5; unsigned int __unused6; @@ -2712,7 +2649,7 @@ extern asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t* offset, siz * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode) * and the register representation of a signed int (msr in 64-bit mode) is performed. */ -asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, __kernel_off_t32* offset, u32 count) +asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, compat_off_t* offset, u32 count) { mm_segment_t old_fs = get_fs(); int ret; @@ -2733,7 +2670,7 @@ asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, __kernel_off_t32* offset, extern asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t *offset, size_t count); -asmlinkage int sys32_sendfile64(int out_fd, int in_fd, __kernel_loff_t32 *offset, s32 count) +asmlinkage int sys32_sendfile64(int out_fd, int in_fd, compat_loff_t *offset, s32 count) { mm_segment_t old_fs = get_fs(); int ret; @@ -4296,7 +4233,7 @@ asmlinkage long sys32_time(compat_time_t* tloc) extern asmlinkage int sys_sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_setaffinity(__kernel_pid_t32 pid, unsigned int len, +asmlinkage int sys32_sched_setaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; @@ -4320,7 +4257,7 @@ asmlinkage int sys32_sched_setaffinity(__kernel_pid_t32 pid, unsigned int len, extern asmlinkage int sys_sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_getaffinity(__kernel_pid_t32 pid, unsigned int len, +asmlinkage int sys32_sched_getaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; diff --git a/arch/ppc64/kernel/time.c b/arch/ppc64/kernel/time.c index fa5816bc5bba..4ab5eb9916fd 100644 --- a/arch/ppc64/kernel/time.c +++ b/arch/ppc64/kernel/time.c @@ -301,9 +301,11 @@ int timer_interrupt(struct pt_regs * regs) next_dec = lpaca->default_decr; set_dec(next_dec); +#ifdef CONFIG_PPC_ISERIES lpq = lpaca->lpQueuePtr; if (lpq && ItLpQueue_isLpIntPending(lpq)) lpEvent_count += ItLpQueue_process(lpq, regs); +#endif irq_exit(); @@ -458,9 +460,11 @@ void __init time_init(void) ppc_md.calibrate_decr(); - if ( ! piranha_simulator ) { +#ifdef CONFIG_PPC_ISERIES + if (!piranha_simulator) +#endif ppc_md.get_boot_time(&tm); - } + write_lock_irqsave(&xtime_lock, flags); xtime.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); diff --git a/arch/ppc64/kernel/xics.c b/arch/ppc64/kernel/xics.c index 477580671eb5..6b4fef7e151c 100644 --- a/arch/ppc64/kernel/xics.c +++ b/arch/ppc64/kernel/xics.c @@ -22,7 +22,7 @@ #include <asm/naca.h> #include <asm/rtas.h> #include "i8259.h" -#include "xics.h" +#include <asm/xics.h> #include <asm/ppcdebug.h> #include <asm/machdep.h> @@ -430,15 +430,6 @@ nextnode: ppc64_boot_msg(0x21, "XICS Done"); } -void xics_isa_init(void) -{ - return; - if (request_irq(xics_irq_8259_cascade + XICS_IRQ_OFFSET, no_action, - 0, "8259 cascade", 0)) - printk(KERN_ERR "xics_init_IRQ: couldn't get 8259 cascade\n"); - i8259_init(); -} - void xics_set_affinity(unsigned int virq, unsigned long cpumask) { irq_desc_t *desc = irq_desc + virq; @@ -446,7 +437,7 @@ void xics_set_affinity(unsigned int virq, unsigned long cpumask) unsigned long flags; long status; unsigned long xics_status[2]; - u32 newmask; + unsigned long newmask; virq -= XICS_IRQ_OFFSET; irq = virt_irq_to_real(virq); @@ -464,12 +455,12 @@ void xics_set_affinity(unsigned int virq, unsigned long cpumask) } /* For the moment only implement delivery to all cpus or one cpu */ - if (cpumask == 0xffffffff) { + if (cpumask == -1UL) { newmask = default_distrib_server; } else { if (!(cpumask & cpu_online_map)) goto out; - newmask = find_first_bit(&cpumask, 32); + newmask = find_first_bit(&cpumask, 8*sizeof(unsigned long)); } status = rtas_call(ibm_set_xive, 3, 1, NULL, diff --git a/arch/ppc64/lib/Makefile b/arch/ppc64/lib/Makefile index ee78c4aba382..441c4f989386 100644 --- a/arch/ppc64/lib/Makefile +++ b/arch/ppc64/lib/Makefile @@ -2,7 +2,9 @@ # Makefile for ppc64-specific library files.. # -export-objs := dec_and_lock.o +L_TARGET = lib.a -obj-y := checksum.o dec_and_lock.o string.o strcase.o copypage.o \ - memcpy.o copyuser.o +export-objs := dec_and_lock.o + +obj-y := checksum.o dec_and_lock.o string.o strcase.o +obj-y += copypage.o memcpy.o copyuser.o diff --git a/arch/ppc64/lib/memcpy.S b/arch/ppc64/lib/memcpy.S index 8567b296dee5..9ccacdf5bcb9 100644 --- a/arch/ppc64/lib/memcpy.S +++ b/arch/ppc64/lib/memcpy.S @@ -121,7 +121,7 @@ _GLOBAL(memcpy) cmpwi cr1,r5,8 addi r3,r3,32 sld r9,r9,r10 - blt cr1,.Ldo_tail + ble cr1,.Ldo_tail ld r0,8(r4) srd r7,r0,r11 or r9,r7,r9 diff --git a/arch/ppc64/mm/Makefile b/arch/ppc64/mm/Makefile index 1c37b9024c0a..19679827f1e0 100644 --- a/arch/ppc64/mm/Makefile +++ b/arch/ppc64/mm/Makefile @@ -2,7 +2,7 @@ # Makefile for the linux ppc-specific parts of the memory manager. # -EXTRA_CFLAGS = -mno-minimal-toc +EXTRA_CFLAGS += -mno-minimal-toc -obj-y := fault.o init.o extable.o imalloc.o +obj-y := fault.o init.o extable.o imalloc.o obj-$(CONFIG_DISCONTIGMEM) += numa.o diff --git a/arch/ppc64/oprofile/Makefile b/arch/ppc64/oprofile/Makefile index 191180628bca..b3a71ef1c80c 100644 --- a/arch/ppc64/oprofile/Makefile +++ b/arch/ppc64/oprofile/Makefile @@ -1,8 +1,8 @@ obj-$(CONFIG_OPROFILE) += oprofile.o -DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \ +DRIVER_OBJS := $(addprefix ../../../drivers/oprofile/, \ oprof.o cpu_buffer.o buffer_sync.o \ event_buffer.o oprofile_files.o \ oprofilefs.o oprofile_stats.o ) -oprofile-y := $(DRIVER_OBJS) init.o timer_int.o +oprofile-y := $(DRIVER_OBJS) init.o timer_int.o diff --git a/arch/ppc64/xmon/Makefile b/arch/ppc64/xmon/Makefile index bb90495aaf9b..fb21a7088d3e 100644 --- a/arch/ppc64/xmon/Makefile +++ b/arch/ppc64/xmon/Makefile @@ -1,5 +1,5 @@ # Makefile for xmon -EXTRA_CFLAGS = -mno-minimal-toc +EXTRA_CFLAGS += -mno-minimal-toc -obj-y := start.o xmon.o ppc-dis.o ppc-opc.o subr_prf.o setjmp.o +obj-y := start.o xmon.o ppc-dis.o ppc-opc.o subr_prf.o setjmp.o diff --git a/arch/ppc64/xmon/start.c b/arch/ppc64/xmon/start.c index d715be66953d..12df10a98a5f 100644 --- a/arch/ppc64/xmon/start.c +++ b/arch/ppc64/xmon/start.c @@ -14,29 +14,13 @@ #include <asm/page.h> #include <asm/prom.h> #include <asm/processor.h> - -/* Transition to udbg isn't quite done yet...but very close. */ -#define USE_UDBG -#ifdef USE_UDBG #include <asm/udbg.h> -#endif -#ifndef USE_UDBG -static volatile unsigned char *sccc, *sccd; -#endif -unsigned long TXRDY, RXRDY; extern void xmon_printf(const char *fmt, ...); static int xmon_expect(const char *str, unsigned int timeout); -#ifndef USE_UDBG -static int console = 0; -#endif -static int via_modem = 0; -/* static int xmon_use_sccb = 0; --Unused */ - #define TB_SPEED 25000000 -extern void *comport1; static inline unsigned int readtb(void) { unsigned int ret; @@ -45,16 +29,10 @@ static inline unsigned int readtb(void) return ret; } -#ifndef USE_UDBG -void buf_access(void) +static void sysrq_handle_xmon(int key, struct pt_regs *pt_regs, + struct tty_struct *tty) { - sccd[3] &= ~0x80; /* reset DLAB */ -} -#endif - -static void sysrq_handle_xmon(int key, struct pt_regs *pt_regs, struct tty_struct *tty) -{ - xmon(pt_regs); + xmon(pt_regs); } static struct sysrq_key_op sysrq_xmon_op = { @@ -68,50 +46,12 @@ xmon_map_scc(void) { /* This maybe isn't the best place to register sysrq 'x' */ __sysrq_put_key_op('x', &sysrq_xmon_op); -#ifndef USE_UDBG - /* should already be mapped by the kernel boot */ - sccd = (volatile unsigned char *) (((unsigned long)comport1)); - sccc = (volatile unsigned char *) (((unsigned long)comport1)+5); - TXRDY = 0x20; - RXRDY = 1; -#endif } -static int scc_initialized = 0; - -void xmon_init_scc(void); -extern void pmu_poll(void); - int xmon_write(void *handle, void *ptr, int nb) { -#ifdef USE_UDBG return udbg_write(ptr, nb); -#else - char *p = ptr; - int i, c, ct; - - if (!scc_initialized) - xmon_init_scc(); - ct = 0; - for (i = 0; i < nb; ++i) { - while ((*sccc & TXRDY) == 0) { - } - c = p[i]; - if (c == '\n' && !ct) { - c = '\r'; - ct = 1; - --i; - } else { - if (console) - printk("%c", c); - ct = 0; - } - buf_access(); - *sccd = c; - } - return i; -#endif } int xmon_wants_key; @@ -119,68 +59,15 @@ int xmon_wants_key; int xmon_read(void *handle, void *ptr, int nb) { -#ifdef USE_UDBG return udbg_read(ptr, nb); -#else - char *p = ptr; - int i, c; - - if (!scc_initialized) - xmon_init_scc(); - for (i = 0; i < nb; ++i) { - do { - while ((*sccc & RXRDY) == 0) - ; - buf_access(); - c = *sccd; - } while (c == 0x11 || c == 0x13); - *p++ = c; - } - return i; -#endif } int xmon_read_poll(void) { -#ifdef USE_UDBG return udbg_getc_poll(); -#else - if ((*sccc & RXRDY) == 0) { - return -1; - } - buf_access(); - return *sccd; -#endif } -void -xmon_init_scc() -{ -#ifndef USE_UDBG - sccd[3] = 0x83; eieio(); /* LCR = 8N1 + DLAB */ - sccd[0] = 12; eieio(); /* DLL = 9600 baud */ - sccd[1] = 0; eieio(); - sccd[2] = 0; eieio(); /* FCR = 0 */ - sccd[3] = 3; eieio(); /* LCR = 8N1 */ - sccd[1] = 0; eieio(); /* IER = 0 */ -#endif - - scc_initialized = 1; - if (via_modem) { - for (;;) { - xmon_write(0, "ATE1V1\r", 7); - if (xmon_expect("OK", 5)) { - xmon_write(0, "ATA\r", 4); - if (xmon_expect("CONNECT", 40)) - break; - } - xmon_write(0, "+++", 3); - xmon_expect("OK", 3); - } - } -} - void *xmon_stdin; void *xmon_stdout; void *xmon_stderr; diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 24d33e1d5734..894f49d3f269 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -745,48 +745,6 @@ source "drivers/ieee1394/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - - menu "Old CD-ROM drivers (not SCSI, not IDE)" config CD_NO_IDESCSI diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index cc5d534ec3b1..e64173082211 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -883,396 +883,6 @@ source "drivers/fc4/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -config DUMMY - tristate "Dummy net driver support" - depends on NETDEVICES - ---help--- - This is essentially a bit-bucket device (i.e. traffic you send to - this device is consigned into oblivion) with a configurable IP - address. It is most commonly used in order to make your currently - inactive SLIP address seem like a real address for local programs. - If you use SLIP or PPP, you might want to say Y here. Since this - thing often comes in handy, the default is Y. It won't enlarge your - kernel either. What a deal. Read about it in the Network - Administrator's Guide, available from - <http://www.linuxdoc.org/docs.html#guide>. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt>. The module - will be called dummy.o. If you want to use more than one dummy - device at a time, you need to compile this driver as a module. - Instead of 'dummy', the devices will then be called 'dummy0', - 'dummy1' etc. - -config BONDING - tristate "Bonding driver support" - depends on NETDEVICES - ---help--- - Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet - Channels together. This is called 'Etherchannel' by Cisco, - 'Trunking' by Sun, and 'Bonding' in Linux. - - If you have two Ethernet connections to some other computer, you can - make them behave like one double speed connection using this driver. - Naturally, this has to be supported at the other end as well, either - with a similar Bonding Linux driver, a Cisco 5500 switch or a - SunTrunking SunSoft driver. - - This is similar to the EQL driver, but it merges Ethernet segments - instead of serial lines. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt>. The module - will be called bonding.o. - -config TUN - tristate "Universal TUN/TAP device driver support" - depends on NETDEVICES - ---help--- - TUN/TAP provides packet reception and transmission for user space - programs. It can be viewed as a simple Point-to-Point or Ethernet - device, which instead of receiving packets from a physical media, - receives them from user space program and instead of sending packets - via physical media writes them to the user space program. - - When a program opens /dev/net/tun, driver creates and registers - corresponding net device tunX or tapX. After a program closed above - devices, driver will automatically delete tunXX or tapXX device and - all routes corresponding to it. - - Please read <file:Documentation/networking/tuntap.txt> for more - information. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called tun.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - - If you don't know what to use this for, you don't need it. - -config ETHERTAP - tristate "Ethertap network tap (OBSOLETE)" - depends on NETDEVICES && EXPERIMENTAL && NETLINK - ---help--- - If you say Y here (and have said Y to "Kernel/User network link - driver", above) and create a character special file /dev/tap0 with - major number 36 and minor number 16 using mknod ("man mknod"), you - will be able to have a user space program read and write raw - Ethernet frames from/to that special file. tap0 can be configured - with ifconfig and route like any other Ethernet device but it is not - connected to any physical LAN; everything written by the user to - /dev/tap0 is treated by the kernel as if it had come in from a LAN - to the device tap0; everything the kernel wants to send out over the - device tap0 can instead be read by the user from /dev/tap0: the user - mode program replaces the LAN that would be attached to an ordinary - Ethernet device. Please read the file - <file:Documentation/networking/ethertap.txt> for more information. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - The module will be called ethertap.o. If you want to compile it as a - module, say M here and read <file:Documentation/modules.txt>. - - If you don't know what to use this for, you don't need it. - -config PPP - tristate "PPP (point-to-point protocol) support" - depends on NETDEVICES - ---help--- - PPP (Point to Point Protocol) is a newer and better SLIP. It serves - the same purpose: sending Internet traffic over telephone (and other - serial) lines. Ask your access provider if they support it, because - otherwise you can't use it; most Internet access providers these - days support PPP rather than SLIP. - - To use PPP, you need an additional program called pppd as described - in the PPP-HOWTO, available at - <http://www.linuxdoc.org/docs.html#howto>. Make sure that you have - the version of pppd recommended in <file:Documentation/Changes>. - The PPP option enlarges your kernel by about 16 KB. - - There are actually two versions of PPP: the traditional PPP for - asynchronous lines, such as regular analog phone lines, and - synchronous PPP which can be used over digital ISDN lines for - example. If you want to use PPP over phone lines or other - asynchronous serial lines, you need to say Y (or M) here and also to - the next option, "PPP support for async serial ports". For PPP over - synchronous lines, you should say Y (or M) here and to "Support - synchronous PPP", below. - - This driver is also available as a module ( = code which can be - inserted in and removed from the running kernel whenever you want). - If you said Y to "Version information on all symbols" above, then - you cannot compile the PPP driver into the kernel; you can then only - compile it as a module. The module will be called ppp_generic.o. - If you want to compile it as a module, say M here and read - <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. - -config PPP_ASYNC - tristate "PPP support for async serial ports" - depends on PPP - ---help--- - Say Y (or M) here if you want to be able to use PPP over standard - asynchronous serial ports, such as COM1 or COM2 on a PC. If you use - a modem (not a synchronous or ISDN modem) to contact your ISP, you - need this option. - - This code is also available as a module (code which can be inserted - into and removed from the running kernel). If you want to compile - it as a module, say M here and read <file:Documentation/modules.txt>. - - If unsure, say Y. - -config PPP_SYNC_TTY - tristate "PPP support for sync tty ports" - depends on PPP - help - Say Y (or M) here if you want to be able to use PPP over synchronous - (HDLC) tty devices, such as the SyncLink adapter. These devices - are often used for high-speed leased lines like T1/E1. - - This code is also available as a module (code which can be inserted - into and removed from the running kernel). If you want to compile - it as a module, say M here and read - <file:Documentation/modules.txt>. - -config PPP_DEFLATE - tristate "PPP Deflate compression" - depends on PPP - ---help--- - Support for the Deflate compression method for PPP, which uses the - Deflate algorithm (the same algorithm that gzip uses) to compress - each PPP packet before it is sent over the wire. The machine at the - other end of the PPP link (usually your ISP) has to support the - Deflate compression method as well for this to be useful. Even if - they don't support it, it is safe to say Y here. - - This code is also available as a module (code which can be inserted - into and removed from the running kernel). If you want to compile - it as a module, say M here and read - <file:Documentation/modules.txt>. - -config PPP_BSDCOMP - tristate "PPP BSD-Compress compression" - depends on NETDEVICES && PPP!=n && m - ---help--- - Support for the BSD-Compress compression method for PPP, which uses - the LZW compression method to compress each PPP packet before it is - sent over the wire. The machine at the other end of the PPP link - (usually your ISP) has to support the BSD-Compress compression - method as well for this to be useful. Even if they don't support it, - it is safe to say Y here. - - The PPP Deflate compression method ("PPP Deflate compression", - above) is preferable to BSD-Compress, because it compresses better - and is patent-free. - - Note that the BSD compression code will always be compiled as a - module; it is called bsd_comp.o and will show up in the directory - modules once you have said "make modules". If unsure, say N. - -config SLIP - tristate "SLIP (serial line) support" - depends on NETDEVICES - ---help--- - Say Y if you intend to use SLIP or CSLIP (compressed SLIP) to - connect to your Internet service provider or to connect to some - other local Unix box or if you want to configure your Linux box as a - Slip/CSlip server for other people to dial in. SLIP (Serial Line - Internet Protocol) is a protocol used to send Internet traffic over - serial connections such as telephone lines or null modem cables; - nowadays, the protocol PPP is more commonly used for this same - purpose. - - Normally, your access provider has to support SLIP in order for you - to be able to use it, but there is now a SLIP emulator called SLiRP - around (available from - <ftp://ibiblio.org/pub/Linux/system/network/serial/>) which - allows you to use SLIP over a regular dial up shell connection. If - you plan to use SLiRP, make sure to say Y to CSLIP, below. The - NET-3-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>, explains how to - configure SLIP. Note that you don't need this option if you just - want to run term (term is a program which gives you almost full - Internet connectivity if you have a regular dial up shell account on - some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). SLIP - support will enlarge your kernel by about 4 KB. If unsure, say N. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. The module will be - called slip.o. - -config SLIP_COMPRESSED - bool "CSLIP compressed headers" - depends on SLIP - ---help--- - This protocol is faster than SLIP because it uses compression on the - TCP/IP headers (not on the data itself), but it has to be supported - on both ends. Ask your access provider if you are not sure and - answer Y, just in case. You will still be able to use plain SLIP. If - you plan to use SLiRP, the SLIP emulator (available from - <ftp://ibiblio.org/pub/Linux/system/network/serial/>) which - allows you to use SLIP over a regular dial up shell connection, you - definitely want to say Y here. The NET-3-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>, explains how to configure - CSLIP. This won't enlarge your kernel. - -config SLIP_SMART - bool "Keepalive and linefill" - depends on SLIP - help - Adds additional capabilities to the SLIP driver to support the - RELCOM line fill and keepalive monitoring. Ideal on poor quality - analogue lines. - -config SLIP_MODE_SLIP6 - bool "Six bit SLIP encapsulation" - depends on SLIP - help - Just occasionally you may need to run IP over hostile serial - networks that don't pass all control characters or are only seven - bit. Saying Y here adds an extra mode you can use with SLIP: - "slip6". In this mode, SLIP will only send normal ASCII symbols over - the serial device. Naturally, this has to be supported at the other - end of the link as well. It's good enough, for example, to run IP - over the async ports of a Camtec JNT Pad. If unsure, say N. - -config SUNLANCE - tristate "Sun LANCE support" - depends on NETDEVICES - help - This driver supports the "le" interface present on all 32-bit Sparc - systems, on some older Ultra systems and as an Sbus option. These - cards are based on the AMD Lance chipset, which is better known - via the NE2100 cards. - - This support is also available as a module called sunlance.o ( = - code which can be inserted in and removed from the running kernel - whenever you want). If you want to compile it as a module, say M - here and read <file:Documentation/modules.txt>. - -config HAPPYMEAL - tristate "Sun Happy Meal 10/100baseT support" - depends on NETDEVICES - help - This driver supports the "hme" interface present on most Ultra - systems and as an option on older Sbus systems. This driver supports - both PCI and Sbus devices. This driver also supports the "qfe" quad - 100baseT device available in both PCI and Sbus configurations. - - This support is also available as a module called sunhme.o ( = code - which can be inserted in and removed from the running kernel - whenever you want). If you want to compile it as a module, say M - here and read <file:Documentation/modules.txt>. - -config SUNBMAC - tristate "Sun BigMAC 10/100baseT support (EXPERIMENTAL)" - depends on NETDEVICES && EXPERIMENTAL - help - This driver supports the "be" interface available as an Sbus option. - This is Sun's older 100baseT Ethernet device. - - This support is also available as a module called sunbmac.o ( = code - which can be inserted in and removed from the running kernel - whenever you want). If you want to compile it as a module, say M - here and read <file:Documentation/modules.txt>. - -config SUNQE - tristate "Sun QuadEthernet support" - depends on NETDEVICES - help - This driver supports the "qe" 10baseT Ethernet device, available as - an Sbus option. Note that this is not the same as Quad FastEthernet - "qfe" which is supported by the Happy Meal driver instead. - - This support is also available as a module called sunqe.o ( = code - which can be inserted in and removed from the running kernel - whenever you want). If you want to compile it as a module, say M - here and read <file:Documentation/modules.txt>. - -config MYRI_SBUS - tristate "MyriCOM Gigabit Ethernet support" - depends on NETDEVICES - help - This driver supports MyriCOM Sbus gigabit Ethernet cards. - - If you want to compile this driver as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt>. This is - recommended. The module will be called myri_sbus.o. - -config VORTEX - tristate "3c590/3c900 series (592/595/597) \"Vortex/Boomerang\" support" - depends on NETDEVICES && PCI - ---help--- - This option enables driver support for a large number of 10mbps and - 10/100mbps EISA, PCI and PCMCIA 3Com network cards: - - "Vortex" (Fast EtherLink 3c590/3c592/3c595/3c597) EISA and PCI - "Boomerang" (EtherLink XL 3c900 or 3c905) PCI - "Cyclone" (3c540/3c900/3c905/3c980/3c575/3c656) PCI and Cardbus - "Tornado" (3c905) PCI - "Hurricane" (3c555/3cSOHO) PCI - - If you have such a card, say Y and read the Ethernet-HOWTO, - available from <http://www.linuxdoc.org/docs.html#howto>. More - specific information is in - <file:Documentation/networking/vortex.txt> and in the comments at - the beginning of <file:drivers/net/3c59x.c>. - - If you want to compile this as a module ( = code which can be - inserted in and removed from the running kernel whenever you want), - say M here and read <file:Documentation/modules.txt> as well as - <file:Documentation/networking/net-modules.txt>. - -# bool ' FDDI driver support' CONFIG_FDDI -# if [ "$CONFIG_FDDI" = "y" ]; then -# fi -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" # This one must be before the filesystem configs. -DaveM diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 815b9fef3e18..704cd7e25fcb 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig @@ -1404,47 +1404,6 @@ source "drivers/ieee1394/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" # This one must be before the filesystem configs. -DaveM diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig index c96e55a6aebd..2c1ab625eb77 100644 --- a/arch/v850/Kconfig +++ b/arch/v850/Kconfig @@ -304,47 +304,6 @@ source "drivers/message/i2o/Kconfig" source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -source "drivers/atm/Kconfig" - -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index 13f7e51be1b3..6d95f38a29d8 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig @@ -567,49 +567,6 @@ source "drivers/ieee1394/Kconfig" #source drivers/message/i2o/Config.in source "net/Kconfig" - -menu "Network device support" - depends on NET - -config NETDEVICES - bool "Network device support" - ---help--- - You can say N here if you don't intend to connect your Linux box to - any other computer at all or if all your connections will be over a - telephone line with a modem either via UUCP (UUCP is a protocol to - forward mail and news between unix hosts over telephone lines; read - the UUCP-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell - account or a BBS, even using term (term is a program which gives you - almost full Internet connectivity if you have a regular dial up - shell account on some Internet connected Unix computer. Read - <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). - - You'll have to say Y if your computer contains a network card that - you want to use under Linux (make sure you know its name because you - will be asked for it and read the Ethernet-HOWTO (especially if you - plan to use more than one network card under Linux)) or if you want - to use SLIP (Serial Line Internet Protocol is the protocol used to - send Internet traffic over telephone lines or null modem cables) or - CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better - and newer replacement for SLIP) or PLIP (Parallel Line Internet - Protocol is mainly used to create a mini network by connecting the - parallel ports of two local machines) or AX.25/KISS (protocol for - sending Internet traffic over amateur radio links). - - Make sure to read the NET-3-HOWTO. Eventually, you will have to read - Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If - unsure, say Y. - -source "drivers/net/Kconfig" - -# ATM seems to be largely 64bit unsafe and also unmaintained - disable it for now. -# if [ "$CONFIG_ATM" = "y" ]; then -# source drivers/atm/Config.in -# fi -endmenu - source "net/ax25/Kconfig" source "net/irda/Kconfig" diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index b27355fe0135..b68000d5da44 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig @@ -61,6 +61,16 @@ config AGP_VIA You should say Y here if you use XFree86 3.3.6 or 4.x and want to use GLX or DRI. If unsure, say N. +config AGP_VIA_KT400 + tristate "VIA KT400 chipset support" + depends on AGP3 + help + This option gives you AGP support for the GLX component of the + XFree86 4.x on VIA KT400 AGP 3.0 chipsets. + + You should say Y here if you use XFree86 3.3.6 or 4.x and want to + use GLX or DRI. If unsure, say N. + config AGP_AMD tristate "AMD Irongate, 761, and 762 support" depends on AGP diff --git a/drivers/char/agp/Makefile b/drivers/char/agp/Makefile index 88f62c3284fc..2ff6e33ffb4e 100644 --- a/drivers/char/agp/Makefile +++ b/drivers/char/agp/Makefile @@ -12,6 +12,7 @@ obj-$(CONFIG_AGP) += agpgart.o obj-$(CONFIG_AGP_INTEL) += intel-agp.o obj-$(CONFIG_AGP_VIA) += via-agp.o +obj-$(CONFIG_AGP_VIA_KT400) += via-kt400.o obj-$(CONFIG_AGP_AMD) += amd-k7-agp.o obj-$(CONFIG_AGP_SIS) += sis-agp.o obj-$(CONFIG_AGP_ALI) += ali-agp.o diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index e001b44a5b39..d0fc9f658abf 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h @@ -1,5 +1,6 @@ /* - * AGPGART module version 0.99 + * AGPGART module + * Copyright (C) 2002 Dave Jones * Copyright (C) 1999 Jeff Hartmann * Copyright (C) 1999 Precision Insight, Inc. * Copyright (C) 1999 Xi Graphics, Inc. @@ -46,6 +47,7 @@ void agp_generic_destroy_page(void *addr); int agp_generic_suspend(void); void agp_generic_resume(void); void agp_free_key(int key); +int agp_num_entries(void); #define PFX "agpgart: " @@ -292,6 +294,9 @@ struct agp_bridge_data { #define VIA_ATTBASE 0x88 /* VIA KT400 */ +#define VIA_AGP3_GARTCTRL 0x90 +#define VIA_AGP3_APSIZE 0x94 +#define VIA_AGP3_ATTBASE 0x98 #define VIA_AGPSEL 0xfd /* SiS registers */ diff --git a/drivers/char/agp/amd-k8-agp.c b/drivers/char/agp/amd-k8-agp.c index f7a2a3f81d0b..4b9e5994f6b4 100644 --- a/drivers/char/agp/amd-k8-agp.c +++ b/drivers/char/agp/amd-k8-agp.c @@ -14,8 +14,6 @@ #include <linux/agp_backend.h> #include "agp.h" -extern int agp_memory_reserved; - static u_int64_t pci_read64 (struct pci_dev *dev, int reg) { union { @@ -48,16 +46,11 @@ static void pci_write64 (struct pci_dev *dev, int reg, u64 value) static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type) { int i, j, num_entries; - void *temp; long tmp; u32 pte; u64 addr; - temp = agp_bridge.current_size; - - num_entries = A_SIZE_32(temp)->num_entries; - - num_entries -= agp_memory_reserved>>PAGE_SHIFT; + num_entries = agp_num_entries(); if (type != 0 || mem->type != 0) return -EINVAL; diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index a901a2af7cdb..65cf115d48ce 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c @@ -1,5 +1,5 @@ /* - * AGPGART module version 1.0 + * AGPGART driver backend routines. * Copyright (C) 2002 Dave Jones. * Copyright (C) 1999 Jeff Hartmann. * Copyright (C) 1999 Precision Insight, Inc. diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c index 46f7d16c9f65..2fb607ad1b4c 100644 --- a/drivers/char/agp/frontend.c +++ b/drivers/char/agp/frontend.c @@ -1,5 +1,6 @@ /* - * AGPGART module frontend version 0.99 + * AGPGART driver frontend + * Copyright (C) 2002 Dave Jones * Copyright (C) 1999 Jeff Hartmann * Copyright (C) 1999 Precision Insight, Inc. * Copyright (C) 1999 Xi Graphics, Inc. diff --git a/drivers/char/agp/generic-3.0.c b/drivers/char/agp/generic-3.0.c index 11a7a4df100f..5319451fa81d 100644 --- a/drivers/char/agp/generic-3.0.c +++ b/drivers/char/agp/generic-3.0.c @@ -1,3 +1,7 @@ +/* + * Generic routines for AGP 3.0 compliant bridges. + */ + #include <linux/list.h> #include <linux/pci.h> #include <linux/agp_backend.h> @@ -393,8 +397,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) if(mcapndx == 0) { printk(KERN_ERR PFX "woah! Non-AGP device " - "found on the secondary bus of an AGP 3.0 " - "bridge!\n"); + "found on the secondary bus of an AGP 3.0 bridge!\n"); ret = -ENODEV; goto free_and_exit; } @@ -442,9 +445,8 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) rate = 0x2; break; default: - printk(KERN_ERR PFX "woah! Bogus AGP rate " - "value found advertised behind an AGP 3.0 " - "bridge!\n"); + printk(KERN_ERR PFX "woah! Bogus AGP rate (%d) " + "value found advertised behind an AGP 3.0 bridge!\n", rate); ret = -ENODEV; goto free_and_exit; } @@ -455,12 +457,10 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) * whether isochronous transfers are supported. */ if(isoch != 0) { - if((ret = agp_3_0_isochronous_node_enable(dev_list, - ndevs)) != 0) + if((ret = agp_3_0_isochronous_node_enable(dev_list, ndevs)) != 0) goto free_and_exit; } else { - if((ret = agp_3_0_nonisochronous_node_enable(dev_list, - ndevs)) != 0) + if((ret = agp_3_0_nonisochronous_node_enable(dev_list,ndevs)) != 0) goto free_and_exit; } @@ -534,8 +534,7 @@ int agp_generic_agp_3_0_enable(u32 mode) major = (ncapid >> 20) & 0xf; minor = (ncapid >> 16) & 0xf; - printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n", - major, minor); + printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n",major, minor); if(major >= 3) { pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx + 0x4, &agp_3_0); diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index cc5ab2feb26e..6a55778defc9 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c @@ -1,5 +1,5 @@ /* - * AGPGART module version 1.0 + * AGPGART driver. * Copyright (C) 2002 Dave Jones. * Copyright (C) 1999 Jeff Hartmann. * Copyright (C) 1999 Precision Insight, Inc. @@ -203,6 +203,40 @@ static int agp_return_size(void) return current_size; } +int agp_num_entries(void) +{ + int num_entries; + void *temp; + + temp = agp_bridge.current_size; + + switch (agp_bridge.size_type) { + case U8_APER_SIZE: + num_entries = A_SIZE_8(temp)->num_entries; + break; + case U16_APER_SIZE: + num_entries = A_SIZE_16(temp)->num_entries; + break; + case U32_APER_SIZE: + num_entries = A_SIZE_32(temp)->num_entries; + break; + case LVL2_APER_SIZE: + num_entries = A_SIZE_LVL2(temp)->num_entries; + break; + case FIXED_APER_SIZE: + num_entries = A_SIZE_FIX(temp)->num_entries; + break; + default: + num_entries = 0; + break; + } + + num_entries -= agp_memory_reserved>>PAGE_SHIFT; + if (num_entries<0) + num_entries = 0; + return num_entries; +} + /* Routine to copy over information structure */ int agp_copy_info(agp_kern_info * info) @@ -713,3 +747,5 @@ EXPORT_SYMBOL(agp_generic_alloc_by_type); EXPORT_SYMBOL(agp_generic_free_by_type); EXPORT_SYMBOL(global_cache_flush); +EXPORT_SYMBOL_GPL(agp_num_entries); + diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index ee2961fc4834..c9457777eb64 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c @@ -1467,7 +1467,9 @@ static struct __initdata pci_driver agp_intel_pci_driver = { .probe = agp_intel_probe, }; -static int __init agp_intel_init(void) +/* intel_agp_init() must not be declared static for explicit + early initialization to work (ie i810fb) */ +int __init agp_intel_init(void) { int ret_val; static int agp_initialised=0; diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c index a6b774459075..b9ec5981f6ce 100644 --- a/drivers/char/agp/via-agp.c +++ b/drivers/char/agp/via-agp.c @@ -124,65 +124,23 @@ static int __init via_generic_setup (struct pci_dev *pdev) return 0; } -#ifdef CONFIG_AGP3 /* * The KT400 does magick to put the AGP bridge compliant with the same * standards version as the graphics card. If we haven't fallen into - * 2.0 compatability mode, we run the normal 3.0 code, and fall back - * if something nasty happens. + * 2.0 compatability mode, we abort, as this gets picked up by + * via-agp3.o */ -static void __init via_kt400_enable(u32 mode) -{ - if ((agp_generic_agp_3_0_enable(mode))==FALSE) - /* Something weird happened, fall back to 2.0 */ - agp_generic_agp_enable(mode); -} -#endif static int __init via_kt400_setup(struct pci_dev *pdev) { u8 reg; - - agp_bridge.masks = via_generic_masks; - agp_bridge.num_of_masks = 1; - agp_bridge.aperture_sizes = (void *) via_generic_sizes; - agp_bridge.size_type = U8_APER_SIZE; - agp_bridge.num_aperture_sizes = 7; - agp_bridge.dev_private_data = NULL; - agp_bridge.needs_scratch_page = FALSE; - agp_bridge.configure = via_configure; - agp_bridge.fetch_size = via_fetch_size; - agp_bridge.cleanup = via_cleanup; - agp_bridge.tlb_flush = via_tlbflush; - agp_bridge.mask_memory = via_mask_memory; - agp_bridge.cache_flush = global_cache_flush; - agp_bridge.create_gatt_table = agp_generic_create_gatt_table; - agp_bridge.free_gatt_table = agp_generic_free_gatt_table; - agp_bridge.insert_memory = agp_generic_insert_memory; - agp_bridge.remove_memory = agp_generic_remove_memory; - agp_bridge.alloc_by_type = agp_generic_alloc_by_type; - agp_bridge.free_by_type = agp_generic_free_by_type; - agp_bridge.agp_alloc_page = agp_generic_alloc_page; - agp_bridge.agp_destroy_page = agp_generic_destroy_page; - agp_bridge.suspend = agp_generic_suspend; - agp_bridge.resume = agp_generic_resume; - agp_bridge.cant_use_aperture = 0; - pci_read_config_byte(pdev, VIA_AGPSEL, ®); + /* Check AGP 2.0 compatability mode. */ if ((reg & (1<<1))==1) { - /* AGP 2.0 compatability mode. */ - agp_bridge.agp_enable = agp_generic_agp_enable; - - } else { -#ifdef CONFIG_AGP3 - /* AGP 3.0 mode */ - agp_bridge.agp_enable = via_kt400_enable; -#else - printk ("AGP: VIA KT400 in AGP3.0 mode support not compiled in.\n"); - return -ENODEV; -#endif + via_generic_setup(pdev); + return 0; } - return 0; + return -ENODEV; } static struct agp_device_ids via_agp_device_ids[] __initdata = @@ -244,6 +202,11 @@ static struct agp_device_ids via_agp_device_ids[] __initdata = .chipset = VIA_VT8605, .chipset_name = "Apollo ProSavage PM133" }, + { + .device_id = PCI_DEVICE_ID_VIA_8235_0, + .chipset = VIA_P4X400, + .chipset_name = "P4X400" + }, { }, /* dummy final entry, always present */ }; diff --git a/drivers/char/agp/via-kt400.c b/drivers/char/agp/via-kt400.c new file mode 100644 index 000000000000..b23b19ab90c9 --- /dev/null +++ b/drivers/char/agp/via-kt400.c @@ -0,0 +1,199 @@ +/* + * VIA KT400 AGPGART routines. + * + * The KT400 does magick to put the AGP bridge compliant with the same + * standards version as the graphics card. If we haven't fallen into + * 2.0 compatability mode, we run this code. Otherwise, we run the + * code in via-agp.c + */ + +#include <linux/types.h> +#include <linux/module.h> +#include <linux/pci.h> +#include <linux/init.h> +#include <linux/agp_backend.h> +#include "agp.h" + +static int via_fetch_size(void) +{ + int i; + u8 temp; + struct aper_size_info_16 *values; + + values = A_SIZE_16(agp_bridge.aperture_sizes); + pci_read_config_byte(agp_bridge.dev, VIA_AGP3_APSIZE, &temp); + for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { + if (temp == values[i].size_value) { + agp_bridge.previous_size = + agp_bridge.current_size = (void *) (values + i); + agp_bridge.aperture_size_idx = i; + return values[i].size; + } + } + return 0; +} + +static int via_configure(void) +{ + u32 temp; + struct aper_size_info_16 *current_size; + + current_size = A_SIZE_16(agp_bridge.current_size); + + /* address to map too */ + pci_read_config_dword(agp_bridge.dev, VIA_APBASE, &temp); + agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); + + /* attbase - aperture GATT base */ + pci_write_config_dword(agp_bridge.dev, VIA_AGP3_ATTBASE, + agp_bridge.gatt_bus_addr & 0xfffff000); + return 0; +} + +static void via_cleanup(void) +{ + struct aper_size_info_16 *previous_size; + + previous_size = A_SIZE_16(agp_bridge.previous_size); + pci_write_config_byte(agp_bridge.dev, VIA_APSIZE, previous_size->size_value); +} + +static void via_tlbflush(agp_memory * mem) +{ + u32 temp; + + pci_read_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, &temp); + pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp & ~(1<<7)); + pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp); +} + +static unsigned long via_mask_memory(unsigned long addr, int type) +{ + /* Memory type is ignored */ + + return addr | agp_bridge.masks[0].mask; +} + +static struct aper_size_info_16 via_generic_sizes[11] = +{ + { 4, 1024, 0, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2|1<<1|1<<0 }, + { 8, 2048, 1, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2|1<<1}, + { 16, 4096, 2, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2}, + { 32, 8192, 3, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3}, + { 64, 16384, 4, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4}, + { 128, 32768, 5, 1<<11|1<<10|1<<9|1<<8|1<<5}, + { 256, 65536, 6, 1<<11|1<<10|1<<9|1<<8}, + { 512, 131072, 7, 1<<11|1<<10|1<<9}, + { 1024, 262144, 8, 1<<11|1<<10}, + { 2048, 524288, 9, 1<<11} /* 2GB <- Max supported */ +}; + +static struct gatt_mask via_generic_masks[] = +{ + {.mask = 0x00000000, .type = 0} +}; + + +static void __init via_kt400_enable(u32 mode) +{ + if ((agp_generic_agp_3_0_enable(mode))==FALSE) + printk (KERN_INFO PFX "agp_generic_agp_3_0_enable() failed\n"); +} + + +static int __init agp_via_probe (struct pci_dev *dev, const struct pci_device_id *ent) +{ + u8 reg; + u8 cap_ptr = 0; + + cap_ptr = pci_find_capability(dev, PCI_CAP_ID_AGP); + if (cap_ptr == 0) + return -ENODEV; + + pci_read_config_byte(dev, VIA_AGPSEL, ®); + /* Check if we are in AGP 2.0 compatability mode, if so it + * will be picked up by via-agp.o */ + if ((reg & (1<<1))==1) + return -ENODEV; + + printk (KERN_INFO PFX "Detected VIA KT400 AGP3 chipset\n"); + + agp_bridge.dev = dev; + agp_bridge.type = VIA_APOLLO_KT400_3; + agp_bridge.capndx = cap_ptr; + agp_bridge.masks = via_generic_masks; + agp_bridge.num_of_masks = 1; + agp_bridge.aperture_sizes = (void *) via_generic_sizes; + agp_bridge.size_type = U8_APER_SIZE; + agp_bridge.num_aperture_sizes = 7; + agp_bridge.dev_private_data = NULL; + agp_bridge.needs_scratch_page = FALSE; + agp_bridge.agp_enable = via_kt400_enable; + agp_bridge.configure = via_configure; + agp_bridge.fetch_size = via_fetch_size; + agp_bridge.cleanup = via_cleanup; + agp_bridge.tlb_flush = via_tlbflush; + agp_bridge.mask_memory = via_mask_memory; + agp_bridge.cache_flush = global_cache_flush; + agp_bridge.create_gatt_table = agp_generic_create_gatt_table; + agp_bridge.free_gatt_table = agp_generic_free_gatt_table; + agp_bridge.insert_memory = agp_generic_insert_memory; + agp_bridge.remove_memory = agp_generic_remove_memory; + agp_bridge.alloc_by_type = agp_generic_alloc_by_type; + agp_bridge.free_by_type = agp_generic_free_by_type; + agp_bridge.agp_alloc_page = agp_generic_alloc_page; + agp_bridge.agp_destroy_page = agp_generic_destroy_page; + agp_bridge.suspend = agp_generic_suspend; + agp_bridge.resume = agp_generic_resume; + agp_bridge.cant_use_aperture = 0; + + /* Fill in the mode register */ + pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+4, &agp_bridge.mode); + + agp_register_driver(dev); + return 0; +} + +static struct pci_device_id agp_via_pci_table[] __initdata = { + { + .class = (PCI_CLASS_BRIDGE_HOST << 8), + .class_mask = ~0, + .vendor = PCI_VENDOR_ID_VIA, + .device = PCI_DEVICE_ID_VIA_8377_0, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + }, + { } +}; + +MODULE_DEVICE_TABLE(pci, agp_via_pci_table); + +static struct __initdata pci_driver agp_via_pci_driver = { + .name = "agpgart-via", + .id_table = agp_via_pci_table, + .probe = agp_via_probe, +}; + +static int __init agp_via_init(void) +{ + int ret_val; + + ret_val = pci_module_init(&agp_via_pci_driver); + if (ret_val) + agp_bridge.type = NOT_SUPPORTED; + + return ret_val; +} + +static void __exit agp_via_cleanup(void) +{ + agp_unregister_driver(); + pci_unregister_driver(&agp_via_pci_driver); +} + +module_init(agp_via_init); +module_exit(agp_via_cleanup); + +MODULE_AUTHOR("Dave Jones <davej@codemonkey.org.uk>"); +MODULE_LICENSE("GPL and additional rights"); + diff --git a/drivers/input/serio/sa1111ps2.c b/drivers/input/serio/sa1111ps2.c index 01dc3c0681f2..6ff316c8f121 100644 --- a/drivers/input/serio/sa1111ps2.c +++ b/drivers/input/serio/sa1111ps2.c @@ -145,6 +145,8 @@ static int ps2_open(struct serio *io) ps2if->open = 1; + enable_irq_wake(ps2if->dev->irq[0]); + sa1111_writel(PS2CR_ENA, ps2if->base + SA1111_PS2CR); return 0; } @@ -155,6 +157,8 @@ static void ps2_close(struct serio *io) sa1111_writel(0, ps2if->base + SA1111_PS2CR); + disable_irq_wake(ps2if->dev->irq[0]); + ps2if->open = 0; free_irq(ps2if->dev->irq[1], ps2if); @@ -337,7 +341,7 @@ static int ps2_resume(struct device *dev, u32 level) */ static struct sa1111_driver ps2_driver = { .drv = { - .name = "SA1111 PS2", + .name = "sa1111-ps2", .bus = &sa1111_bus_type, .probe = ps2_probe, .remove = ps2_remove, diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index dbfeb7f67f15..d5e788cbb253 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -1,7 +1,42 @@ # # Network device configuration # -source "drivers/net/arcnet/Kconfig" + +config NETDEVICES + depends on NET + bool "Network device support" + ---help--- + You can say N here if you don't intend to connect your Linux box to + any other computer at all or if all your connections will be over a + telephone line with a modem either via UUCP (UUCP is a protocol to + forward mail and news between unix hosts over telephone lines; read + the UUCP-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>) or dialing up a shell + account or a BBS, even using term (term is a program which gives you + almost full Internet connectivity if you have a regular dial up + shell account on some Internet connected Unix computer. Read + <http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html>). + + You'll have to say Y if your computer contains a network card that + you want to use under Linux (make sure you know its name because you + will be asked for it and read the Ethernet-HOWTO (especially if you + plan to use more than one network card under Linux)) or if you want + to use SLIP (Serial Line Internet Protocol is the protocol used to + send Internet traffic over telephone lines or null modem cables) or + CSLIP (compressed SLIP) or PPP (Point to Point Protocol, a better + and newer replacement for SLIP) or PLIP (Parallel Line Internet + Protocol is mainly used to create a mini network by connecting the + parallel ports of two local machines) or AX.25/KISS (protocol for + sending Internet traffic over amateur radio links). + + Make sure to read the NET-3-HOWTO. Eventually, you will have to read + Olaf Kirch's excellent and free book "Network Administrator's + Guide", to be found in <http://www.linuxdoc.org/docs.html#guide>. If + unsure, say Y. + +if NETDEVICES + source "drivers/net/arcnet/Kconfig" +endif config DUMMY tristate "Dummy net driver support" @@ -245,6 +280,19 @@ config ARIADNE want). The module is called ariadne.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. +config ARIADNE2 + tristate "Ariadne II support" + depends on NETDEVICES && ZORRO + help + This driver is for the Village Tronic Ariadne II and the Individual + Computers X-Surf Ethernet cards. If you have such a card, say Y. + Otherwise, say N. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you want). + The module will be called ariadne2.o. If you want to compile it as + a module, say M here and read <file:Documentation/modules.txt>. + config NE2K_ZORRO tristate "Ariadne II and X-Surf support" depends on NET_ETHERNET && ZORRO @@ -272,6 +320,156 @@ config HYDRA want). The module is called hydra.o. If you want to compile it as a module, say M here and read <file:Documentation/modules.txt>. +config APNE + tristate "PCMCIA NE2000 support" + depends on NETDEVICES && AMIGA_PCMCIA + help + If you have a PCMCIA NE2000 compatible adapter, say Y. Otherwise, + say N. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you + want). The module is called apne.o. If you want to compile it as a + module, say M here and read <file:Documentation/modules.txt>. + +config APOLLO_ELPLUS + tristate "Apollo 3c505 support" + depends on NETDEVICES && APOLLO + help + Say Y or M here if your Apollo has a 3Com 3c505 ISA Ethernet card. + If you don't have one made for Apollos, you can use one from a PC, + except that your Apollo won't be able to boot from it (because the + code in the ROM will be for a PC). + +config MAC8390 + bool "Macintosh NS 8390 based ethernet cards" + depends on NETDEVICES && MAC + help + If you want to include a driver to support Nubus or LC-PDS + Ethernet cards using an NS8390 chipset or its equivalent, say Y + and read the Ethernet-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>. + +config MAC89x0 + tristate "Macintosh CS89x0 based ethernet cards" + depends on NETDEVICES && MAC + ---help--- + Support for CS89x0 chipset based Ethernet cards. If you have a + Nubus or LC-PDS network (Ethernet) card of this type, say Y and + read the Ethernet-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>. + + If you want to compile this as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read <file:Documentation/modules.txt> as well as + <file:Documentation/networking/net-modules.txt>. This module will + be called mac89x0.o. + +config MACSONIC + tristate "Macintosh SONIC based ethernet (onboard, NuBus, LC, CS)" + depends on NETDEVICES && MAC + ---help--- + Support for NatSemi SONIC based Ethernet devices. This includes + the onboard Ethernet in many Quadras as well as some LC-PDS, + a few Nubus and all known Comm Slot Ethernet cards. If you have + one of these say Y and read the Ethernet-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>. + + If you want to compile this as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read <file:Documentation/modules.txt> as well as + <file:Documentation/networking/net-modules.txt>. This module will + be called macsonic.o. + +config MACMACE + bool "Macintosh (AV) onboard MACE ethernet (EXPERIMENTAL)" + depends on NETDEVICES && MAC && EXPERIMENTAL + help + Support for the onboard AMD 79C940 MACE Ethernet controller used in + the 660AV and 840AV Macintosh. If you have one of these Macintoshes + say Y and read the Ethernet-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>. + +config MVME147_NET + tristate "MVME147 (Lance) Ethernet support" + depends on NETDEVICES && MVME147 + help + Support for the on-board Ethernet interface on the Motorola MVME147 + single-board computer. Say Y here to include the + driver for this chip in your kernel. If you want to compile it as + a module, say M here and read <file:Documentation/modules.txt>. + +config MVME16x_NET + tristate "MVME16x Ethernet support" + depends on NETDEVICES && MVME16x + help + This is the driver for the Ethernet interface on the Motorola + MVME162, 166, 167, 172 and 177 boards. Say Y here to include the + driver for this chip in your kernel. If you want to compile it as + a module, say M here and read <file:Documentation/modules.txt>. + +config BVME6000_NET + tristate "BVME6000 Ethernet support" + depends on NETDEVICES && BVME6000 + help + This is the driver for the Ethernet interface on BVME4000 and + BVME6000 VME boards. Say Y here to include the driver for this chip + in your kernel. If you want to compile it as a module, say M here + and read <file:Documentation/modules.txt>. + +config ATARILANCE + tristate "Atari Lance support" + depends on NETDEVICES && ATARI + help + Say Y to include support for several Atari Ethernet adapters based + on the AMD Lance chipset: RieblCard (with or without battery), or + PAMCard VME (also the version by Rhotron, with different addresses). + +config ATARI_BIONET + tristate "BioNet-100 support" + depends on NETDEVICES && ATARI && ATARI_ACSI!=n + help + Say Y to include support for BioData's BioNet-100 Ethernet adapter + for the ACSI port. The driver works (has to work...) with a polled + I/O scheme, so it's rather slow :-( + +config ATARI_PAMSNET + tristate "PAMsNet support" + depends on NETDEVICES && ATARI && ATARI_ACSI!=n + help + Say Y to include support for the PAMsNet Ethernet adapter for the + ACSI port ("ACSI node"). The driver works (has to work...) with a + polled I/O scheme, so it's rather slow :-( + +config SUN3LANCE + tristate "Sun3/Sun3x on-board LANCE support" + depends on NETDEVICES && (SUN3 || SUN3X) + help + Most Sun3 and Sun3x motherboards (including the 3/50, 3/60 and 3/80) + featured an AMD Lance 10Mbit Ethernet controller on board; say Y + here to compile in the Linux driver for this and enable Ethernet. + General Linux information on the Sun 3 and 3x series (now + discontinued) is at + <http://www.angelfire.com/ca2/tech68k/sun3.html>. + + If you're not building a kernel for a Sun 3, say N. + +config SUN3_82586 + tristate "Sun3 on-board Intel 82586 support" + depends on NETDEVICES && SUN3 + help + This driver enables support for the on-board Intel 82586 based + Ethernet adapter found on Sun 3/1xx and 3/2xx motherboards. Note + that this driver does not support 82586-based adapters on additional + VME boards. + +config HPLANCE + bool "HP on-board LANCE support" + depends on NETDEVICES && HP300 + help + If you want to use the builtin "LANCE" Ethernet controller on an + HP300 machine, say Y here. + config LASI_82596 tristate "Lasi ethernet" depends on NET_ETHERNET && PARISC && GSC_LASI @@ -384,7 +582,7 @@ config SUNGEM config NET_VENDOR_3COM bool "3COM cards" - depends on NET_ETHERNET + depends on NET_ETHERNET && (ISA || EISA || MCA || PCI) help If you have a network (Ethernet) card belonging to this class, say Y and read the Ethernet-HOWTO, available from @@ -555,7 +753,7 @@ config LANCE config NET_VENDOR_SMC bool "Western Digital/SMC cards" - depends on NET_ETHERNET + depends on NET_ETHERNET && (ISA || MCA || EISA || MAC) help If you have a network (Ethernet) card belonging to this class, say Y and read the Ethernet-HOWTO, available from @@ -631,7 +829,7 @@ config ULTRA32 config SMC9194 tristate "SMC 9194 support" - depends on NET_VENDOR_SMC && ISA + depends on NET_VENDOR_SMC && (ISA || MAC) ---help--- This is support for the SMC9xxx based Ethernet cards. Choose this option if you have a DELL laptop with the docking station, or @@ -648,7 +846,7 @@ config SMC9194 config NET_VENDOR_RACAL bool "Racal-Interlan (Micom) NI cards" - depends on NET_ETHERNET + depends on NET_ETHERNET && ISA help If you have a network (Ethernet) card belonging to this class, such as the NI5010, NI5210 or NI6210, say Y and read the Ethernet-HOWTO, @@ -898,7 +1096,7 @@ config ETH16I config NE2000 tristate "NE2000/NE1000 support" - depends on NET_ISA + depends on NET_ISA || (Q40 && m) ---help--- If you have a network (Ethernet) card of this type, say Y and read the Ethernet-HOWTO, available from @@ -1459,7 +1657,7 @@ config LAN_SAA9730 config NET_POCKET bool "Pocket and portable adapters" - depends on NET_ETHERNET + depends on NET_ETHERNET && ISA ---help--- Cute little network (Ethernet) devices which attach to the parallel port ("pocket adapters"), commonly used with laptops. If you have @@ -1777,7 +1975,7 @@ config VETH config FDDI bool "FDDI driver support" - depends on NETDEVICES + depends on NETDEVICES && (PCI || EISA) help Fiber Distributed Data Interface is a high speed local area network design; essentially a replacement for high speed Ethernet. FDDI can @@ -1828,7 +2026,7 @@ config SKFP config HIPPI bool "HIPPI driver support (EXPERIMENTAL)" - depends on NETDEVICES && EXPERIMENTAL && INET + depends on NETDEVICES && EXPERIMENTAL && INET && PCI help HIgh Performance Parallel Interface (HIPPI) is a 800Mbit/sec and 1600Mbit/sec dual-simplex switched or point-to-point network. HIPPI @@ -2181,7 +2379,7 @@ config ARLAN config AIRONET4500 tristate "Aironet 4500/4800 series adapters" - depends on NET_RADIO + depends on NET_RADIO && (PCI || ISA || PCMCIA) ---help--- www.aironet.com (recently bought by Cisco) makes these 802.11 DS adapters. Driver by Elmer Joandi (elmer@ylenurme.ee). @@ -2286,7 +2484,7 @@ source "drivers/net/tokenring/Kconfig" config NET_FC bool "Fibre Channel driver support" - depends on NETDEVICES + depends on NETDEVICES && SCSI && PCI help Fibre Channel is a high speed serial protocol mainly used to connect large storage devices to the computer; it is compatible with and @@ -2348,3 +2546,4 @@ source "drivers/net/wan/Kconfig" source "drivers/net/pcmcia/Kconfig" +source "drivers/atm/Kconfig" diff --git a/drivers/net/arcnet/Kconfig b/drivers/net/arcnet/Kconfig index df5bd14a8518..699cbd9630fd 100644 --- a/drivers/net/arcnet/Kconfig +++ b/drivers/net/arcnet/Kconfig @@ -3,7 +3,7 @@ # menu "ARCnet devices" - depends on NETDEVICES + depends on NETDEVICES && (ISA || PCI) config ARCNET tristate "ARCnet support" diff --git a/drivers/net/tokenring/Kconfig b/drivers/net/tokenring/Kconfig index 8b3488f1230b..06df8def7553 100644 --- a/drivers/net/tokenring/Kconfig +++ b/drivers/net/tokenring/Kconfig @@ -91,7 +91,7 @@ config 3C359 config TMS380TR tristate "Generic TMS380 Token Ring ISA/PCI adapter support" - depends on TR + depends on TR && (PCI || ISA) ---help--- This driver provides generic support for token ring adapters based on the Texas Instruments TMS380 series chipsets. This diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 5f1cea63241a..38667fa242e2 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig @@ -2,12 +2,12 @@ # Wireless LAN device configuration # comment "Wireless ISA/PCI cards support" - depends on NET_RADIO + depends on NET_RADIO && (ISA || PCI || ALL_PPC || PCMCIA) # Good old obsolete Wavelan. config WAVELAN tristate "AT&T/Lucent old WaveLAN & DEC RoamAbout DS ISA support" - depends on NET_RADIO + depends on NET_RADIO && ISA ---help--- The Lucent WaveLAN (formerly NCR and AT&T; or DEC RoamAbout DS) is a Radio LAN (wireless Ethernet-like Local Area Network) using the @@ -54,7 +54,7 @@ config AIRO config HERMES tristate "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)" - depends on NET_RADIO + depends on NET_RADIO && (ALL_PPC || PCI || PCMCIA) ---help--- A driver for 802.11b wireless cards based based on the "Hermes" or Intersil HFA384x (Prism 2) MAC controller. This includes the vast diff --git a/drivers/pci/pci.ids b/drivers/pci/pci.ids index 123d4a292d28..60d3a51f93a3 100644 --- a/drivers/pci/pci.ids +++ b/drivers/pci/pci.ids @@ -7,7 +7,7 @@ # so if you have anything to contribute, please visit the home page or # send a diff -u against the most recent pci.ids to pci-ids@ucw.cz. # -# $Id: pci.ids,v 1.46 2002/08/14 17:38:51 mares Exp $ +# $Id: pci.ids,v 1.48 2002/12/26 13:03:41 mares Exp $ # # Vendors, devices and subsystems. Please keep sorted. @@ -21,6 +21,8 @@ 001a Ascend Communications, Inc. 0033 Paradyne corp. 003d Lockheed Martin-Marietta Corp +# Real TJN ID is e159, but they got it wrong several times --mj +0059 Tiger Jet Network Inc. (Wrong ID) 0070 Hauppauge computer works Inc. 0100 Ncipher Corp Ltd 0675 Dynalink @@ -98,7 +100,8 @@ f130 NetFlex-3/P ThunderLAN 1.0 f150 NetFlex-3/P ThunderLAN 2.3 0e55 HaSoTec GmbH -1000 LSI Logic / Symbios Logic (formerly NCR) +# Formerly NCR +1000 LSI Logic / Symbios Logic 0001 53c810 1000 1000 8100S 0002 53c820 @@ -159,8 +162,9 @@ 9100 INI-9100/9100W SCSI Host 1002 ATI Technologies Inc 4158 68800AX [Mach32] - 4242 Radeon 8500 DV + 4242 Radeon R200 BB [Radeon All in Wonder 8500DV] 1002 02aa Radeon 8500 AIW DV Edition + 4336 Radeon Mobility U1 4354 215CT [Mach64 CT] 4358 210888CX [Mach64 CX] 4554 210888ET [Mach64 ET] @@ -210,6 +214,7 @@ 4752 Rage XL 1002 0008 Rage XL 1002 4752 Rage XL + 1028 00d1 PowerEdge 2550 4753 Rage XC 1002 4753 Rage XC 4754 3D Rage I/II 215GT [Mach64 GT] @@ -227,6 +232,18 @@ 475a 3D Rage IIC AGP 1002 0087 Rage 3D IIC 1002 475a Rage IIC AGP + 4964 Radeon R250 Id [Radeon 9000] + 4965 Radeon R250 Ie [Radeon 9000] + 4966 Radeon R250 If [Radeon 9000] + 10f1 0002 R250 If [Tachyon G9000 PRO] + 148c 2039 R250 If [Radeon 9000 Pro "Evil Commando"] + 1509 9a00 R250 If [Radeon 9000 "AT009"] + 174b 7176 R250 If [Sapphire Radeon 9000 Pro] + 174b 7192 R250 If [Radeon 9000 "Atlantis"] + 17af 2005 R250 If [Excalibur Radeon 9000 Pro] + 17af 2006 R250 If [Excalibur Radeon 9000] + 4967 Radeon R250 Ig [Radeon 9000] + 496e Radeon R250 [Radeon 9000] (Secondary) 4c42 3D Rage LT Pro AGP-133 0e11 b0e8 Rage 3D LT Pro 0e11 b10e 3D Rage LT Pro (Compaq Armada 1750) @@ -246,6 +263,7 @@ 1002 4c49 Rage LT Pro 4c4d Rage Mobility P/M AGP 2x 1002 0084 Xpert 98 AGP 2X (Mobility) + 1014 0154 ThinkPad A20m 4c4e Rage Mobility L AGP 2x 4c50 3D Rage LT Pro 1002 4c50 Rage LT Pro @@ -253,7 +271,8 @@ 4c52 Rage Mobility P/M 4c53 Rage Mobility L 4c54 264LT [Mach64 LT] - 4c57 Radeon Mobility M7 LW + 4c57 Radeon Mobility M7 LW [Radeon Mobility 7500] + 1014 0517 ThinkPad T30 1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100) 4c58 Radeon Mobility M7 LX [Radeon Mobility FireGL 7800] 4c59 Radeon Mobility M6 LY @@ -261,8 +280,17 @@ 1014 0239 ThinkPad X22/X23/X24 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 4c5a Radeon Mobility M6 LZ + 4c64 Radeon R250 Ld [Radeon Mobility 9000] + 4c65 Radeon R250 Le [Radeon Mobility 9000] + 4c66 Radeon R250 Lf [Radeon Mobility 9000] + 4c67 Radeon R250 Lg [Radeon Mobility 9000] 4d46 Rage Mobility M4 AGP 4d4c Rage Mobility M4 AGP + 4e44 Radeon R300 ND [Radeon 9700] + 4e45 Radeon R300 NE [Radeon 9700] + 4e46 Radeon R300 NF [Radeon 9700] + 4e47 Radeon R300 NG [Radeon 9700] + 4e64 Radeon R300 [Radeon 9700] (Secondary) 5041 Rage 128 PA/PRO 5042 Rage 128 PB/PRO AGP 2x 5043 Rage 128 PC/PRO AGP 4x @@ -289,7 +317,7 @@ 504d Rage 128 PM/PRO 504e Rage 128 PN/PRO AGP 2x 504f Rage 128 PO/PRO AGP 4x - 5050 Rage 128 PP/PRO TMDS + 5050 Rage 128 PP/PRO TMDS [Xpert 128] 1002 0008 Xpert 128 5051 Rage 128 PQ/PRO AGP 2x TMDS 5052 Rage 128 PR/PRO AGP 4x TMDS @@ -299,7 +327,7 @@ 5056 Rage 128 PV/PRO TMDS 5057 Rage 128 PW/PRO AGP 2x TMDS 5058 Rage 128 PX/PRO AGP 4x TMDS - 5144 Radeon QD + 5144 Radeon R100 QD [Radeon 64 DDR] 1002 0008 Radeon 7000/Radeon VE 1002 0009 Radeon 7000/Radeon 1002 000a Radeon 7000/Radeon @@ -313,9 +341,9 @@ 1002 028a Radeon 7000/Radeon 1002 02aa Radeon AIW 1002 053a Radeon 7000/Radeon - 5145 Radeon QE - 5146 Radeon QF - 5147 Radeon QG + 5145 Radeon R100 QE + 5146 Radeon R100 QF + 5147 Radeon R100 QG 5148 Radeon R200 QH [Radeon 8500] 1002 0152 FireGL 8800 1002 0172 FireGL 8700 @@ -325,17 +353,30 @@ 514c Radeon R200 QL [Radeon 8500 LE] 1002 003a Radeon R200 QL [Radeon 8500 LE] 1002 013a Radeon 8500 - 5157 Radeon 7500 QW + 148c 2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] + 174b 7149 Radeon R200 QL [Sapphire Radeon 8500 LE] + 5157 Radeon RV200 QW [Radeon 7500] 1002 013a Radeon 7500 + 1458 4000 RV200 QW [RADEON 7500 PRO MAYA AR] + 148c 2024 RV200 QW [Radeon 7500LE Dual Display] + 148c 2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] + 148c 2036 RV200 QW [Radeon 7500 PCI Dual Display] + 174b 7147 RV200 QW [Sapphire Radeon 7500LE] 174b 7161 Radeon RV200 QW [Radeon 7500 LE] - 5158 Radeon 7500 QX + 17af 0202 RV200 QW [Excalibur Radeon 7500LE] + 5158 Radeon RV200 QX [Radeon 7500] 5159 Radeon VE QY 1002 000a Radeon 7000/Radeon VE + 1002 000b Radeon 7000 1002 0038 Radeon 7000/Radeon VE 1002 003a Radeon 7000/Radeon VE 1002 00ba Radeon 7000/Radeon VE 1002 013a Radeon 7000/Radeon VE - 174b 7112 Radeon 7000 64M TVO + 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] + 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] + 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] + 174b 7112 RV100 QY [Sapphire Radeon VE 7000] + 1787 0202 RV100 QY [Excalibur Radeon 7000] 515a Radeon VE QZ 5168 Radeon R200 Qh 5169 Radeon R200 Qi @@ -390,6 +431,7 @@ 1002 5654 Mach64VT Reference 5655 264VT3 [Mach64 VT3] 5656 264VT4 [Mach64 VT4] + 700f U1/A3 AGP Bridge [IGP 320M] 1003 ULSI Systems 0201 US201 1004 VLSI Technology Inc @@ -419,7 +461,10 @@ 1004 0306 QSound ThunderBird PCI Audio Support Registers 122d 1208 DSP368 Audio Support Registers 1483 5022 XWave Thunder 3D Audio Support Registers + 0307 Thunderbird + 0308 Thunderbird 0702 VAS96011 [Golden Gate II] + 0703 Tollgate 1005 Avance Logic Inc. [ALI] 2064 ALG2032/2064 2128 ALG2364A @@ -581,7 +626,8 @@ 1014 1010 CS4610 SoundFusion Audio Accelerator 6003 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] 1013 4280 Crystal SoundFusion PCI Audio Accelerator - 1681 0050 Hercules Game Theater XP + 1681 0050 Game Theater XP + 1681 a011 Fortissimo III 7.1 6004 CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] 6005 Crystal CS4281 PCI Audio 1013 4281 Crystal CS4281 PCI Audio @@ -607,7 +653,9 @@ 0020 MCA 0022 IBM27-82351 002d Python - 002e ServeRAID-3x + 002e ServeRAID Controller + 1014 002e ServeRAID-3x + 1014 022e ServeRAID-4H 0036 Miami 003a CPU to PCI Bridge 003e 16/4 Token ring UTP/STP controller @@ -641,20 +689,26 @@ 00a5 ATM Controller (1410a500) 00a6 ATM 155MBPS MM Controller (1410a600) 00b7 256-bit Graphics Rasterizer [Fire GL1] - 1902 00b8 Fire GL1 00be ATM 622MBPS Controller (1410be00) + 00dc Advanced Systems Management Adapter (ASMA) 00fc CPC710 Dual Bridge and Memory Controller (PCI-64) 0105 CPC710 Dual Bridge and Memory Controller (PCI-32) + 010f Remote Supervisor Adapter (RSA) 0142 Yotta Video Compositor Input 1014 0143 Yotta Input Controller (ytin) 0144 Yotta Video Compositor Output 1014 0145 Yotta Output Controller (ytout) 0156 405GP PLB to PCI Bridge 01a7 PCI-X to PCI-X Bridge - 01bd Netfinity ServeRAID controller - 01be ServeRAID-4M - 01bf ServeRAID-4L - 022e ServeRAID-4H + 01bd ServeRAID Controller + 1014 01be ServeRAID-4M + 1014 01bf ServeRAID-4L + 1014 0208 ServeRAID-4Mx + 1014 020e ServeRAID-4Lx + 1014 022e ServeRAID-4H + 1014 0258 ServeRAID-5i + 1014 0259 ServeRAID-5i + 0302 XA-32 chipset [Summit] ffff MPIC-2 interrupt controller 1015 LSI Logic Corp of Canada 1016 ICL Personal Systems @@ -699,7 +753,11 @@ 1020 Hitachi Computer Products 1021 OKI Electric Industry Co. Ltd. 1022 Advanced Micro Devices [AMD] - 2000 79c970 [PCnet LANCE] + 1100 K8 NorthBridge + 1101 K8 NorthBridge + 1102 K8 NorthBridge + 1103 K8 NorthBridge + 2000 79c970 [PCnet32 LANCE] 1014 2000 NetFinity 10/100 Fast Ethernet 103c 104c Ethernet with LAN remote power Adapter 103c 1064 Ethernet with LAN remote power Adapter @@ -742,19 +800,23 @@ 7443 AMD-768 [Opus] ACPI 1043 8044 A7M-D Mainboard 7445 AMD-768 [Opus] Audio + 7446 AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible) 7448 AMD-768 [Opus] PCI 7449 AMD-768 [Opus] USB + 7450 AMD-8131 PCI-X Bridge + 7451 AMD-8131 PCI-X APIC 7454 AMD-8151 System Controller 7455 AMD-8151 AGP Bridge 7460 AMD-8111 PCI 7461 AMD-8111 USB 7462 AMD-8111 Ethernet + 7464 AMD-8111 USB 7468 AMD-8111 LPC 7469 AMD-8111 IDE 746a AMD-8111 SMBus 2.0 746b AMD-8111 ACPI 746d AMD-8111 AC97 Audio - 756b AMD-8111 ACPI + 746e AMD-8111 MC97 Modem 1023 Trident Microsystems 0194 82C194 2000 4DWave DX @@ -767,6 +829,8 @@ 8520 CyberBlade i1 0e11 b16e CyberBlade i1 AGP 1023 8520 CyberBlade i1 AGP + 8620 CyberBlade/i1 + 1014 0502 ThinkPad T30 8820 CyberBlade XPAi1 9320 TGUI 9320 9350 GUI Accelerator @@ -878,9 +942,9 @@ 0007 Remote Assistant Card 3 0008 PowerEdge Expandable RAID Controller 3/Di 000a PowerEdge Expandable RAID Controller 3 - 1027 0121 PowerEdge Expandable RAID Controller 3/Di 1028 0106 PowerEdge Expandable RAID Controller 3/Di 1028 011b PowerEdge Expandable RAID Controller 3/Di + 1028 0121 PowerEdge Expandable RAID Controller 3/Di 000c Embedded Systems Management Device 4 000e PowerEdge Expandable RAID Controller 000f PowerEdge Expandable RAID Controller 4/Di @@ -988,11 +1052,10 @@ 102b 5f52 4Sight II 102b 9010 Millennium G400 Dual Head 1458 0400 GA-G400 - 1705 0001 Digital First Millennium G450 32MB SGRAM - 1705 0002 Digital First Millennium G450 16MB SGRAM - 1705 0003 Digital First Millennium G450 32MB - 1705 0004 Digital First Millennium G450 16MB - b16f 0e11 MGA-G400 AGP + 1705 0001 Millennium G450 32MB SGRAM + 1705 0002 Millennium G450 16MB SGRAM + 1705 0003 Millennium G450 32MB + 1705 0004 Millennium G450 16MB 0527 MGA Parhelia AGP 102b 0840 Parhelia 128Mb 0d10 MGA Ultima/Impression @@ -1063,6 +1126,7 @@ 0035 USB 1179 0001 USB 12ee 7000 Root Hub + 1799 0001 Root Hub 003b PCI to C-bus Bridge 003e NAPCCARD Cardbus Controller 0046 PowerVR PCX2 [midas] @@ -1085,6 +1149,7 @@ 12ee 8011 Root hub 00e0 USB 2.0 12ee 7001 Root hub + 1799 0002 Root Hub 1034 Framatome Connectors USA Inc. 1035 Comp. & Comm. Research Lab 1036 Future Domain Corp. @@ -1114,9 +1179,10 @@ 0630 630 Host 0633 633 Host 0635 635 Host - 0645 645 Host - 0646 645DX Host + 0645 SiS645 Host & Memory & AGP Controller + 0646 SiS645DX Host & Memory & AGP Controller 0650 650 Host + 0651 SiS651 Host 0730 730 Host 0733 733 Host 0735 735 Host @@ -1125,12 +1191,14 @@ 0900 SiS900 10/100 Ethernet 1039 0900 SiS900 10/100 Ethernet Adapter 0961 SiS961 [MuTIOL Media IO] + 0962 SiS962 [MuTIOL Media IO] 3602 83C602 5107 5107 5300 SiS540 PCI Display Adapter 5401 486 PCI Chipset 5511 5511/5512 5513 5513 [IDE] + 1019 0970 P6STP-FL motherboard 1039 5513 SiS5513 EIDE Controller (A,B step) 5517 5517 5571 5571 @@ -1144,7 +1212,8 @@ 6205 VGA Controller 6236 6236 3D-AGP 6300 SiS630 GUI Accelerator+3D - 6306 6306 3D-AGP + 1019 0970 P6STP-FL motherboard + 6306 SiS530 3D PCI/AGP 1039 6306 SiS530,620 GUI Accelerator+3D 6326 86C326 5598/6326 1039 6326 SiS6326 GUI Accelerator @@ -1154,6 +1223,9 @@ 1092 4920 SpeedStar A70 1569 6326 SiS6326 GUI Accelerator 7001 7001 + 1039 7000 Onboard USB Controller + 7002 SiS7002 USB 2.0 + 1509 7002 Onboard USB Controller 7007 FireWire Controller 7012 SiS7012 PCI Audio Accelerator 7013 56k Winmodem (Smart Link HAMR5600 compatible) @@ -1241,7 +1313,6 @@ 3020 Samurai_IDE 1043 Asustek Computer, Inc. 0675 ISDNLink P-IN100-ST-D - 4057 V8200 GeForce 3 1044 Distributed Processing Technology 1012 Domino RAID Engine a400 SmartCache/Raid I-IV Controller @@ -1316,6 +1387,7 @@ 104a SGS Thomson Microelectronics 0008 STG 2000X 0009 STG 1764X + 0010 STG4000 [3D Prophet Kyro Series] 0981 DEC-Tulip compatible 10/100 Ethernet 1746 STG 1764X 2774 DEC-Tulip compatible 10/100 Ethernet @@ -1371,9 +1443,11 @@ 8026 TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) 8027 PCI4451 IEEE-1394 Controller 1028 00e6 PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) + 8400 USR2210 22Mbps Wireless PC Card a001 TDC1570 a100 TDC1561 a102 TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f + a106 TMS320C6205 ac10 PCI1050 ac11 PCI1053 ac12 PCI1130 @@ -1407,6 +1481,7 @@ ac52 PCI1451 PC card Cardbus Controller ac53 PCI1421 PC card Cardbus Controller ac55 PCI1250 PC card Cardbus Controller + 1014 0512 ThinkPad T30 ac60 PCI2040 PCI to DSP Bridge Controller fe00 FireWire Host Controller fe03 12C01A FireWire Host Controller @@ -1432,6 +1507,7 @@ 1050 0840 W89C840 Ethernet Adapter 0940 W89C940 5a5a W89C940F + 6692 W6692 9970 W9970CF 1051 Anigma, Inc. 1052 ?Young Micro Systems @@ -1448,6 +1524,8 @@ 0001 MPC105 [Eagle] 0002 MPC106 [Grackle] 0003 MPC8240 [Kahlua] + 0004 MPC107 + 0006 MPC8245 [Unity] 0100 MC145575 [HFC-PCI] 0431 KTI829c 100VG 1801 Audio I/O Controller (MIDI) @@ -1485,6 +1563,7 @@ 0d38 20263 105a 4d39 Fasttrak66 1275 20275 + 3376 PDC20376 4d30 20267 105a 4d33 Ultra100 105a 4d39 Fasttrak100 @@ -1502,7 +1581,8 @@ 5300 DC5300 6268 20268R 6269 PDC20271 - 105a 6269 Fasttrack tx2 + 105a 6269 FastTrak TX2/TX2000 + 6621 PDC20621 [SX4000] 4 Channel IDE RAID Controller 7275 PDC20277 105b Foxconn International, Inc. 105c Wipro Infotech Limited @@ -1617,6 +1697,11 @@ 002e UniNorth 1.5 PCI 002f UniNorth 1.5 Internal PCI 0030 UniNorth/Pangea FireWire + 0031 UniNorth 2 FireWire + 0032 UniNorth 2 GMAC (Sun GEM) + 0033 UniNorth 2 ATA/100 + 0034 UniNorth 2 AGP + 1645 Tigon3 Gigabit Ethernet NIC (BCM5701) 106c Hyundai Electronics America 8801 Dual Pentium ISA/PCI Motherboard 8802 PowerPC ISA/PCI Motherboard @@ -1728,7 +1813,8 @@ 1087 Cache Computer 1088 Microcomputer Systems (M) Son 1089 Data General Corporation -108a SBS Technologies (formerly Bit3 Computer Corp.) +# Formerly Bit3 Computer Corp. +108a SBS Technologies 0001 VME Bridge Model 617 0010 VME Bridge Model 618 0040 dataBLIZZARD @@ -1820,6 +1906,7 @@ b081 IMAQ-PXI-1422 b091 IMAQ-PXI-1411 c801 PCI-GPIB + c831 PCI-GPIB bridge 1094 First International Computers [FIC] 1095 CMD Technology Inc 0640 PCI0640 @@ -1871,6 +1958,7 @@ 1851 1850 FlyVideo'98 - Video 1851 1851 FlyVideo II 1852 1852 FlyVideo'98 - Video (with FM Tuner) + bd11 1200 PCTV pro (TV + FM stereo receiver) 036f Bt879 Video Capture 127a 0044 Bt879 Video Capture NTSC 127a 0122 Bt879 Video Capture PAL I @@ -1922,6 +2010,7 @@ 14f1 0002 Bt878 Video Capture (Audio Section) 14f1 0003 Bt878 Video Capture (Audio Section) 14f1 0048 Bt878 Video Capture (Audio Section) + bd11 1200 PCTV pro (TV + FM stereo receiver, audio section) 0879 Bt879 Audio Capture 127a 0044 Bt879 Video Capture (Audio Section) 127a 0122 Bt879 Video Capture (Audio Section) @@ -1963,7 +2052,8 @@ 10a2 Quantum Corporation 10a3 Everex Systems Inc 10a4 Globe Manufacturing Sales -10a5 Racal Interlan +10a5 Smart Link Ltd. + 5449 SmartPCI561 modem 10a6 Informtech Industrial Ltd. 10a7 Benchmarq Microelectronics 10a8 Sierra Semiconductor @@ -2029,7 +2119,9 @@ 15ed 1003 MCCS 16-port Serial Hot Swap 9036 9036 9050 PCI <-> IOBus Bridge + 10b5 2036 SatPak GPS 10b5 2273 SH-ARC SoHard ARCnet card + 10b5 9050 MP9050 1522 0001 RockForce 4 Port V.90 Data/Fax/Voice Modem 1522 0002 RockForce 2 Port V.90 Data/Fax/Voice Modem 1522 0003 RockForce 6 Port V.90 Data/Fax/Voice Modem @@ -2067,8 +2159,6 @@ 9080 9080 10b5 9080 9080 [real subsystem ID not set] 129d 0002 Aculab PCI Prosidy card - a001 GTEK Jetport II 2 port serial adaptor - c001 GTEK Cyclone 16/32 port serial adaptor 10b6 Madge Networks 0001 Smart 16/4 PCI Ringnode 0002 Smart 16/4 PCI Ringnode Mk2 @@ -2174,19 +2264,26 @@ 1028 0095 Integrated 3C905C-TX Fast Etherlink for PC Management NIC 10b7 1000 3C905C-TX Fast Etherlink for PC Management NIC 10b7 7000 10/100 Mini PCI Ethernet Adapter + 9300 3CSOHO100B-TX [910-A01] 9800 3c980-TX [Fast Etherlink XL Server Adapter] 10b7 9800 3c980-TX Fast Etherlink XL Server Adapter 9805 3c980-TX 10/100baseTX NIC [Python-T] 10b7 1201 3c982-TXM 10/100baseTX Dual Port A [Hydra] 10b7 1202 3c982-TXM 10/100baseTX Dual Port B [Hydra] 10b7 9805 3c980 10/100baseTX NIC [Python-T] - 9900 3C990-TX Typhoon - 9902 3CR990-TX-95 56-bit Typhoon Client - 9903 3CR990-TX-97 168-bit Typhoon Client + 9900 3C990-TX [Typhoon] + 9902 3CR990-TX-95 [Typhoon 56-bit] + 9903 3CR990-TX-97 [Typhoon 168-bit] 9904 3C990B-TX-M/3C990BSVR [Typhoon2] + 10b7 1000 3CR990B-TX-M [Typhoon2] + 10b7 2000 3CR990BSVR [Typhoon2 Server] 9905 3CR990-FX-95/97/95 [Typhon Fiber] - 9908 3CR990SVR95 56-bit Typhoon Server - 9909 3CR990SVR97 Typhoon Server + 10b7 1101 3CR990-FX-95 [Typhoon Fiber 56-bit] + 10b7 1102 3CR990-FX-97 [Typhoon Fiber 168-bit] + 10b7 2101 3CR990-FX-95 Server [Typhoon Fiber 56-bit] + 10b7 2102 3CR990-FX-97 Server [Typhoon Fiber 168-bit] + 9908 3CR990SVR95 [Typhoon Server 56-bit] + 9909 3CR990SVR97 [Typhoon Server 168-bit] 990b 3C990SVR [Typhoon Server] 10b8 Standard Microsystems Corp [SMC] 0005 83C170QF @@ -2240,9 +2337,9 @@ 1646 M1646 Northbridge+Trident 1647 M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] 1651 M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] - 1671 M1671 P4 Northbridge - 1681 M1681 P4 HyperTransport Northbridge - 1687 M1687 K8 HyperTransport Northbridge + 1671 M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] + 1681 M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] + 1687 M1687 K8 Northbridge [AGP8X and HyperTransport] 3141 M3141 3143 M3143 3145 M3145 @@ -2263,14 +2360,16 @@ 5239 USB 2.0 Controller 5243 M1541 PCI to AGP Controller 5247 PCI to AGP Controller - 5249 HTT to PCI Bridge + 5249 M5249 HTT to PCI Bridge 5251 M5251 P1394 OHCI 1.0 Controller 5253 M5253 P1394 OHCI 1.1 Controller 5261 M5261 Ethernet Controller 5451 M5451 PCI AC-Link Controller Audio Device + 1014 0506 ThinkPad R30 5453 M5453 PCI AC-Link Controller Modem Device 5455 M5455 PCI AC-Link Controller Audio Device 5457 M5457 AC-Link Modem Interface Controller + 5459 SmartPCI561 56K Modem 5471 M5471 Memory Stick Controller 5473 M5473 SD-MMC Controller 7101 M7101 PMU @@ -2293,7 +2392,7 @@ 10c6 Rambus Inc. 10c7 Media Vision 10c8 Neomagic Corporation - 0001 NM2070 [MagicGraph NM2070] + 0001 NM2070 [MagicGraph 128] 0002 NM2090 [MagicGraph 128V] 0003 NM2093 [MagicGraph 128ZV] 0004 NM2160 [MagicGraph 128XD] @@ -2315,13 +2414,14 @@ 10f7 830b MagicGraph 128XD 10f7 830d MagicGraph 128XD 10f7 8312 MagicGraph 128XD - 0005 [MagicMedia 256AV] + 0005 NM2200 [MagicGraph 256AV] + 1014 00dd ThinkPad 570 0006 NM2360 [MagicMedia 256ZX] 0016 NM2380 [MagicMedia 256XL+] 10c8 0016 MagicMedia 256XL+ - 0025 [MagicMedia 256AV+] - 0083 [MagicGraph 128ZV Plus] - 8005 [MagicMedia 256AV Audio] + 0025 NM2230 [MagicGraph 256AV+] + 0083 NM2093 [MagicGraph 128ZV+] + 8005 NM2200 [MagicMedia 256AV Audio] 0e11 b0d1 MagicMedia 256AV Audio Device on Discovery 0e11 b126 MagicMedia 256AV Audio Device on Durango 1014 00dd MagicMedia 256AV Audio Device on BlackTip Thinkpad @@ -2334,7 +2434,7 @@ 110a 8005 MagicMedia 256AV Audio Device 14c0 0004 MagicMedia 256AV Audio Device 8006 NM2360 [MagicMedia 256ZX Audio] - 8016 NM2360 [MagicMedia 256ZX Audio] + 8016 NM2380 [MagicMedia 256XL+ Audio] 10c9 Dataexpert Corporation 10ca Fujitsu Microelectr., Inc. 10cb Omron Corporation @@ -2396,6 +2496,7 @@ 1092 4914 Viper V550 1092 8225 Viper V550 10b4 273d Velocity 4400 + 10b4 273e Velocity 4400 10b4 2740 Velocity 4400 10de 0020 Riva TNT 1102 1015 Graphics Blaster CT6710 @@ -2436,6 +2537,7 @@ 002d RIVA TNT2 Model 64 1043 0200 AGP-V3800M 1043 0201 AGP-V3800M + 1048 0c3a Erazor III LT 1102 1023 CT6892 RIVA TNT2 Value 1102 1024 CT6932 RIVA TNT2 Value 32Mb 1102 102c CT6931 RIVA TNT2 Value [Jumper] @@ -2462,6 +2564,7 @@ 0110 NV11 [GeForce2 MX] 1043 4015 AGP-V7100 Pro 1043 4031 V7100 Pro with TV output + 14af 7102 3D Prophet II MX 14af 7103 3D Prophet II MX Dual-Display 0111 NV11 [GeForce2 MX DDR] 0112 NV11 [GeForce2 Go] @@ -2471,11 +2574,13 @@ 107d 2840 WinFast GeForce2 GTS with TV output 1462 8831 Creative GeForce2 Pro 0151 NV15 [GeForce2 Ti] + 1043 405f V7700Ti 0152 NV15 [GeForce2 Ultra, Bladerunner] 1048 0c56 GLADIAC Ultra 0153 NV15 [Quadro2 Pro] 0170 NV17 [GeForce4 MX460] 0171 NV17 [GeForce4 MX440] + 1462 8661 G4MX440-VTP 0172 NV17 [GeForce4 MX420] 0173 NV1x 0174 NV17 [GeForce4 440 Go] @@ -2486,6 +2591,7 @@ 017a Quadro4 200/400NVS 017b Quadro4 550XGL 017c Quadro4 550 GoGL + 0181 NV18 [GeForce4 MX440 AGP 8x] 01a0 NV15 [GeForce2 - nForce GPU] 01a4 nForce CPU bridge 01ab nForce 420 Memory Controller (DDR) @@ -2497,31 +2603,40 @@ 01b7 nForce AGP to PCI Bridge 01b8 nForce PCI-to-PCI bridge 01bc nForce IDE + 01c1 nForce MC97 Modem (Smart Link HAMR5600 compatible) + 01c2 nForce USB Controller + 01c3 nForce Ethernet Controller 0200 NV20 [GeForce3] 1043 402f AGP-V8200 DDR 0201 NV20 [GeForce3 Ti200] 0202 NV20 [GeForce3 Ti500] 1043 405b V8200 T5 + 1545 002f Xtasy 6964 0203 NV20 [Quadro DCC] 0250 NV25 [GeForce4 Ti4600] 0251 NV25 [GeForce4 Ti4400] 0253 NV25 [GeForce4 Ti4200] + 107d 2896 WinFast A250 LE TD (Dual VGA/TV-out/DVI) + 147b 8f09 Siluro (Dual VGA/TV-out/DVI) 0258 Quadro4 900XGL 0259 Quadro4 750XGL 025b Quadro4 700XGL 10df Emulex Corporation - 10df Light Pulse Fibre Channel Adapter 1ae5 LP6000 Fibre Channel Host Adapter + f085 LP850 Fibre Channel Adapter + f095 LP952 Fibre Channel Adapter + f098 LP982 Fibre Channel Adapter f700 LP7000 Fibre Channel Host Adapter f800 LP8000 Fibre Channel Host Adapter f900 LP9000 Fibre Channel Host Adapter + f980 LP9802 Fibre Channel Adapter 10e0 Integrated Micro Solutions Inc. 5026 IMS5026/27/28 5027 IMS5027 5028 IMS5028 8849 IMS8849 8853 IMS8853 - 9128 IMS9129 [Twin turbo 128] + 9128 IMS9128 [Twin turbo 128] 10e1 Tekram Technology Co.,Ltd. 0391 TRM-S1040 10e1 0391 DC-315U SCSI-3 Host Adapter @@ -2582,6 +2697,7 @@ 1186 1300 DFE-538TX 1186 1320 SN5200 1186 8139 DRN-32TX + 11f6 8139 FN22-3(A) LinxPRO Ethernet Adapter 1259 2500 AT-2500TX 1259 2503 AT-2500TX/ACPI 1429 d010 ND010 @@ -2597,9 +2713,10 @@ 8e2e 7100 KF-230TX/2 a0a0 0007 ALN-325C 8169 RTL-8169 + 8197 SmartLAN56 56K Modem 10ed Ascii Corporation 7310 V7310 -10ee Xilinx, Inc. +10ee Xilinx Corporation 3fc0 RME Digi96 3fc1 RME Digi96/8 3fc2 RME Digi96/8 Pro @@ -2622,6 +2739,7 @@ 10fa Truevision 000c TARGA 1000 10fb Thesys Gesellschaft für Mikroelektronik mbH + 186f TH 6255 10fc I-O Data Device, Inc. # What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives 0003 Cardbus IDE Controller @@ -2655,11 +2773,15 @@ 1102 8061 SBLive! Player 5.1 0004 SB Audigy 1102 0051 SB0090 Audigy Player + 1102 0053 SB0090 Audigy Player/OEM + 0006 [SB Live! Value] EMU10k1X 4001 SB Audigy FireWire Port + 1102 0010 SB Audigy FireWire Port 7002 SB Live! MIDI/Game Port 1102 0020 Gameport Joystick 7003 SB Audigy MIDI/Game port - 1102 0040 SB Audigy MIDI/Gameport + 1102 0040 SB Audigy MIDI/Game Port + 7004 [SB Live! Value] Input device controller 8938 ES1371 1103 Triones Technologies, Inc. 0003 HPT343 @@ -2677,6 +2799,7 @@ 8300 REALmagic Hollywood Plus DVD Decoder 8400 EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder 1106 VIA Technologies, Inc. + 0102 Embedded VIA Ethernet Controller 0130 VT6305 1394.A Controller 0305 VT8363/8365 [KT133/KM133] 1043 8033 A7V Mainboard @@ -2686,7 +2809,10 @@ 0501 VT8501 [Apollo MVP4] 0505 VT82C505 0561 VT82C561 - 0571 VT82C586B PIPC Bus Master IDE + 0571 VT82C586/B/686A/B PIPC Bus Master IDE + 1043 8052 VT8233A Bus Master ATA100/66/33 IDE + 1106 0571 VT8235 Bus Master ATA133/100/66/33 IDE + 1458 5002 GA-7VAX Mainboard 0576 VT82C576 3V [Apollo Master] 0585 VT82C585VP [Apollo VP1/VPX] 0586 VT82C586/A/B PCI-to-ISA [Apollo VP] @@ -2702,6 +2828,7 @@ 0680 VT82C680 [Apollo P6] 0686 VT82C686 [Apollo Super South] 1043 8033 A7V Mainboard + 1043 8040 A7M266 Mainboard 1043 8042 A7V133/A7V133-C Mainboard 1106 0000 VT82C686/A PCI to ISA Bridge 1106 0686 VT82C686/A PCI to ISA Bridge @@ -2715,8 +2842,7 @@ 1571 VT82C416MV 1595 VT82C595/97 [Apollo VP2/97] 3038 USB - 0925 1234 USB Controller - 1234 0925 MVP3 USB Controller + 0925 1234 MVP3 USB Controller 3040 VT82C586B ACPI 3043 VT86C100A [Rhine] 10bd 0000 VT86C100A Fast Ethernet Adapter @@ -2727,6 +2853,7 @@ 3051 VT82C596 Power Management 3057 VT82C686 [Apollo Super ACPI] 1043 8033 A7V Mainboard + 1043 8040 A7M266 Mainboard 1043 8042 A7V133/A7V133-C Mainboard 3058 VT82C686 AC97 Audio Controller 0e11 b194 Soundmax integrated digital audio @@ -2735,27 +2862,37 @@ 1462 3091 MS-6309 Onboard Audio 15dd 7609 Onboard Audio 3059 VT8233 AC97 Audio Controller + 1458 a002 GA-7VAX Onboard Audio (Realtek ALC650) 3065 VT6102 [Rhine-II] + 1106 0102 VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 1186 1400 DFE-530TX rev A 1186 1401 DFE-530TX rev B 3068 AC97 Modem Controller 3074 VT8233 PCI to ISA Bridge + 1043 8052 VT8233A 3091 VT8633 [Apollo Pro266] - 3099 VT8367 [KT266] - 1043 8064 A7V266-E - 1043 807f A7V333 + 3099 VT8366/A/7 [Apollo KT266/A/333] + 1043 8064 A7V266-E Mainboard + 1043 807f A7V333 Mainboard 3101 VT8653 Host Bridge 3102 VT8662 Host Bridge 3103 VT8615 Host Bridge 3104 USB 2.0 + 1458 5004 GA-7VAX Mainboard + 3106 VT6105 [Rhine-III] 3109 VT8233C PCI to ISA Bridge 3112 VT8361 [KLE133] Host Bridge + 3116 VT8375 [KM266] Host Bridge 3128 VT8753 [P4X266 AGP] 3133 VT3133 Host Bridge 3147 VT8233A ISA Bridge 3148 P4M266 Host Bridge 3156 P/KN266 Host Bridge - 3177 VT8233A ISA Bridge + 3168 VT8374 P4X400 Host Controller/AGP Bridge + 3177 VT8235 ISA Bridge + 1458 5001 GA-7VAX Mainboard + 3189 VT8377 [KT400 AGP] Host Bridge + 1458 5000 GA-7VAX Mainboard 5030 VT82C596 ACPI [Apollo PRO] 6100 VT85C100A [Rhine II] 8231 VT8231 [PCI-to-ISA Bridge] @@ -2771,11 +2908,12 @@ 8691 VT82C691 [Apollo Pro] 8693 VT82C693 [Apollo Pro Plus] PCI Bridge b091 VT8633 [Apollo Pro266 AGP] - b099 VT8367 [KT333 AGP] + b099 VT8366/A/7 [Apollo KT266/A/333 AGP] b101 VT8653 AGP Bridge b102 VT8362 AGP Bridge b103 VT8615 AGP Bridge b112 VT8361 [KLE133] AGP Bridge + b168 VT8235 PCI Bridge 1107 Stratus Computers 0576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) 1108 Proteon, Inc. @@ -2806,8 +2944,8 @@ 6037 Firepower Powerized SMP I/O ASIC 6073 Firepower Powerized SMP I/O ASIC 1111 Santa Cruz Operation -# DJ: Some people say that 0x1112 is Rockwell International -1112 RNS - Div. of Meret Communications Inc +# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom +1112 Osicom Technologies Inc 2200 FDDI Adapter 2300 Fast Ethernet Adapter 2340 4 Port Fast Ethernet Adapter @@ -2817,6 +2955,7 @@ 103c 1207 EN-1207D Fast Ethernet Adapter 1113 1211 EN-1207D Fast Ethernet Adapter 1216 EN-1216 Ethernet Adapter + 111a 1020 SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] 1217 EN-1217 Ethernet Adapter 5105 10Mbps Network card 9211 EN-1207D Fast Ethernet Adapter @@ -2957,6 +3096,7 @@ 0001 MVC IM-PCI Video frame grabber/processor 1130 Computervision 1131 Philips Semiconductors + 3400 SmartPCI56(UCB1500) 56K Modem 7130 SAA7130 Video Broadcast Decoder # PCI audio and video broadcast decoder (http://www.semiconductors.philips.com/pip/saa7134hl) 7134 SAA7134 @@ -2988,6 +3128,7 @@ 1133 e004 DIVA 2.0 U e005 DIVA LOW 1133 e005 DIVA 2.01 S/T + e00b Eicon Diva 2.02 e010 DIVA Server BRI-2M 1133 e010 DIVA Server BRI-2M e012 DIVA Server BRI-8M @@ -3036,8 +3177,8 @@ 1144 Cincinnati Milacron 0001 Noservo controller 1145 Workbit Corporation - f007 NinjaSCSI-32 KME 8007 NinjaSCSI-32 Workbit + f007 NinjaSCSI-32 KME f010 NinjaSCSI-32 Workbit f012 NinjaSCSI-32 Logitec f013 NinjaSCSI-32 Logitec @@ -3075,6 +3216,8 @@ 1149 Win System Corporation 114a VMIC 5579 VMIPCI-5579 (Reflective Memory Card) + 5587 VMIPCI-5587 (Reflective Memory Card) + 6504 VMIC PCI 7755 FPGA 7587 VMIVME-7587 114b Canopus Co., Ltd 114c Annabooks @@ -3190,15 +3333,22 @@ 0009 CNB20LE Host Bridge 0010 CIOB30 0011 CMIC-HE + 0012 CMIC-LE 0013 CNB20-HE Host Bridge 0014 CNB20-HE Host Bridge 0015 CMIC-GC Host Bridge 0016 CMIC-GC Host Bridge + 0017 GCNB-LE Host Bridge 0200 OSB4 South Bridge 0201 CSB5 South Bridge + 0203 CSB6 South Bridge 0211 OSB4 IDE Controller 0212 CSB5 IDE Controller - 0220 OSB4/CSB5 USB Controller + 0213 CSB6 RAID/IDE Controller + 0220 OSB4/CSB5 OHCI USB Controller + 0221 CSB6 OHCI USB Controller + 0225 GCLE Host Bridge + 0227 GCLE-2 Host Bridge 1167 Mutoh Industries Inc 1168 Thine Electronics Inc 1169 Centre for Development of Advanced Computing @@ -3350,7 +3500,9 @@ 4240 AMCC S933Q Intelligent Serial Card 11aa Actel 11ab Galileo Technology Ltd. - 0146 GT-64010 + 0146 GT-64010/64010A System Controller + 4611 GT-64115 System Controller + 4620 GT-64120/64120A/64121A System Controller 4801 GT-48001 f003 GT-64010 Primary Image Piranha Image Generator 11ac Canon Information Systems Research Aust. @@ -3391,7 +3543,6 @@ 11c0 Hewlett Packard 11c1 Lucent Microelectronics 0440 56k WinModem - 0001 0440 LT WinModem 56k Data+Fax+Voice+Dsvd 1033 8015 LT WinModem 56k Data+Fax+Voice+Dsvd 1033 8047 LT WinModem 56k Data+Fax+Voice+Dsvd 1033 804f LT WinModem 56k Data+Fax+Voice+Dsvd @@ -3433,7 +3584,6 @@ 1468 0441 Presario 56k V.90 DF Modem 1668 0440 Lucent Win Modem 0442 56k WinModem - 0001 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 11c1 0440 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 11c1 0442 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd 13e0 0412 LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd @@ -3475,6 +3625,7 @@ 044e LT WinModem 044f V90 WildWire Modem 0450 LT WinModem + 144f 4005 Magnia SG20 0451 LT WinModem 0452 LT WinModem 0453 LT WinModem @@ -3485,6 +3636,7 @@ 0458 LT WinModem 0459 LT WinModem 045a LT WinModem + 045c LT WinModem 0461 V90 WildWire Modem 0462 V90 WildWire Modem 0480 Venus Modem (V90, 56KFlex) @@ -3547,6 +3699,7 @@ 11e1 GEC Plessey Semi Inc. 11e2 Samsung Information Systems America 11e3 Quicklogic Corporation + 5030 PC Watchdog 11e4 Second Wave Inc 11e5 IIX Consulting 11e6 Mitsui-Zosen System Research @@ -3675,7 +3828,6 @@ 139c 0016 Raven 139c 0017 Raven 14af 0002 Maxi Gamer Phoenix - 3030 3030 Skywell Magic TwinPower 0004 Voodoo Banshee [Velocity 100] 0005 Voodoo 3 121a 0004 Voodoo3 AGP @@ -3766,11 +3918,12 @@ 1328 0001 Cinemaster C 3.0 DVD Decoder 1240 Marathon Technologies Corp. 1241 DSC Communications -1242 Jaycor Networks, Inc. - 1242 JNI Corporation (former Jaycor Networks, Inc.) +# Formerly Jaycor Networks, Inc. +1242 JNI Corporation + 1560 JNIC-1560 PCI-X Fibre Channel Controller + 1242 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter + 1242 656a FCX-6562 PCI-X Fibre Channel Adapter 4643 FCI-1063 Fibre Channel Adapter - 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - 656a FCX-6562 PCI-X Fibre Channel Adapter 1243 Delphax 1244 AVM Audiovisuelles MKTG & Computer System GmbH 0700 B1 ISDN @@ -3787,7 +3940,7 @@ 1249 Samsung Electronics Co., Ltd. 124a AEG Electrocom GmbH 124b SBS/Greenspring Modular I/O - 0040 cPCI-200 Four Slot IndustryPack carrier + 0040 PCI-40A or cPCI-200 Quad IndustryPack carrier 124b 9080 PCI9080 Bridge 124c Solitron Technologies, Inc. 124d Stallion Technologies, Inc. @@ -3830,7 +3983,6 @@ 1969 ES1969 Solo-1 Audiodrive 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard 125d 8888 Solo-1 Audio Adapter - 525f c888 ES1969 SOLO-1 AudioDrive (+ES1938) 1978 ES1978 Maestro 2E 1033 803c ES1978 Maestro-2E Audiodrive 1033 8058 ES1978 Maestro-2E Audiodrive @@ -3863,6 +4015,9 @@ 1260 Harris Semiconductor 3873 Prism 2.5 Wavelan chipset 1186 3501 DWL-520 Wireless PCI Adapter + 1668 0414 HWP01170-01 802.11b PCI Wireless Adapter + 1737 3874 WMP11 Wireless 802.11b PCI Adaptor + 8086 2513 Wireless 802.11b MiniPCI Adapter 8130 HMP8130 NTSC/PAL Video Decoder 8131 HMP8131 NTSC/PAL Video Decoder 1261 Matsushita-Kotobuki Electronics Industries, Ltd. @@ -3953,7 +4108,6 @@ 8086 5643 ES1371, ES1373 AudioPCI On Motherboard Vancouver 8086 5753 ES1371, ES1373 AudioPCI On Motherboard WS440BX 5000 ES1370 [AudioPCI] - 4942 4c4c Creative Sound Blaster AudioPCI128 5880 5880 AudioPCI 1274 2000 Creative Sound Blaster AudioPCI128 1274 2003 Creative SoundBlaster AudioPCI 128 @@ -4193,7 +4347,7 @@ 12b9 00ab USR 56k Internal Voice Modem (Model 5609) 12b9 00ac USR 56k Internal Voice Modem (Model 3298) 12b9 00ad USR 56k Internal FAX Modem (Model 5610) -12ba PMC Sierra +12ba BittWare, Inc. 12bb Nippon Unisoft Corporation 12bc Array Microsystems 12bd Computerm Corp. @@ -4465,6 +4619,7 @@ 1330 MMC Networks 1331 Radisys Corp. 1332 Micro Memory + 5415 MM-5415CN PCI Memory Module with Battery Backup 1334 Redcreek Communications, Inc 1335 Videomail, Inc 1337 Third Planet Publishing @@ -4502,7 +4657,11 @@ 134f Algo System Co Ltd 1350 Systec Co. Ltd 1351 Sonix Inc -1353 Dassault A.T. +1353 Thales Idatys + 0002 Proserver + 0003 PCI-FUT + 0004 PCI-S0 + 0005 PCI-FUT-S0 1354 Dwave System Inc 1355 Kratos Analytical Ltd 1356 The Logical Co @@ -4510,7 +4669,19 @@ 135a Brain Boxes 135b Giganet Inc 135c Quatech Inc + 0010 QSC-100 + 0020 DSC-100 + 0030 DSC-200/300 + 0040 QSC-200/300 + 0050 ESC-100D + 0060 ESC-100M 00f0 MPAC-100 Syncronous Serial Card (Zilog 85230) + 0170 QSCLP-100 + 0180 DSCLP-100 + 0190 SSCLP-100 + 01a0 QSCLP-200/300 + 01b0 DSCLP-200/300 + 01c0 SSCLP-200/300 135d ABB Network Partner AB 135e Sealevel Systems Inc 7101 Single Port RS-232/422/485/530 @@ -4610,6 +4781,10 @@ 0006 6500 Public Key Processor 0007 7811 Security Processor 0012 7951 Security Processor + 0014 78XX Security Processor + 0016 8065 Security Processor + 0017 8165 Security Processor + 0018 8154 Security Processor 13a4 Rascom Inc 13a5 Audio Digital Imaging Inc 13a6 Videonics Inc @@ -4661,6 +4836,7 @@ 13cf Studio Audio & Video Ltd 13d0 Techsan Electronics Co Ltd 13d1 Abocom Systems Inc + ab02 ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter ab06 RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter 13d2 Shark Multimedia Inc 13d3 IMC Networks @@ -4708,6 +4884,7 @@ 0101 CM8338B 13f6 0101 CMI8338-031 PCI Audio Device 0111 CM8738 + 1019 0970 P6STP-FL motherboard 1043 8077 CMI8738 6-channel audio controller 1043 80e2 CMI8738 6ch-MX 13f6 0111 CMI8738/C3DX PCI Audio Device @@ -4757,6 +4934,7 @@ 1411 Ikos Systems Inc 1412 IC Ensemble Inc 1712 ICE1712 [Envy24] + 1724 ICE1724 [Envy24HT] 1413 Addonics 1414 Microsoft Corporation 1415 Oxford Semiconductor Ltd @@ -4933,6 +5111,7 @@ 14ad Time Space Radio AB 14ae CTI, Inc 14af Guillemot Corporation + 7102 3D Prophet II MX 14b0 BST Communication Technology Ltd 14b1 Nextcom K.K. 14b2 ENNOVATE Networks Inc @@ -4950,6 +5129,7 @@ 0350 PC4800 4500 PC4500 4800 PC4800 + a504 Cisco Aironet Wireless 802.11b 14ba INTERNIX Inc. 14bb SEMTECH Corporation 14bc Globespan Semiconductor Inc. @@ -5022,40 +5202,41 @@ 14e3 AMTELCO 14e4 Broadcom Corporation 1644 NetXtreme BCM5700 Gigabit Ethernet - 1014 0277 Broadcom Vigil B5700 1000BaseTX + 1014 0277 Broadcom Vigil B5700 1000Base-T 1028 00d1 Broadcom BCM5700 1028 0106 Broadcom BCM5700 - 1028 0109 Broadcom BCM5700 1000BaseTX + 1028 0109 Broadcom BCM5700 1000Base-T 1028 010a Broadcom BCM5700 1000BaseTX - 10b7 1000 3C996-T 1000BaseTX - 10b7 1001 3C996B-T 1000BaseTX - 10b7 1002 3C996C-T 1000BaseTX - 10b7 1003 3C997-T 1000BaseTX Dual Port - 10b7 1004 3C996-SX 1000BaseSX - 10b7 1005 3C997-SX 1000BaseSX Dual Port + 10b7 1000 3C996-T 1000Base-T + 10b7 1001 3C996B-T 1000Base-T + 10b7 1002 3C996C-T 1000Base-T + 10b7 1003 3C997-T 1000Base-T Dual Port + 10b7 1004 3C996-SX 1000Base-SX + 10b7 1005 3C997-SX 1000Base-SX Dual Port 10b7 1008 3C942 Gigabit LOM (31X31) - 14e4 0002 NetXtreme 1000BaseSX - 14e4 0003 NetXtreme 1000BaseSX - 14e4 0004 NetXtreme 1000BaseTX + 14e4 0002 NetXtreme 1000Base-SX + 14e4 0003 NetXtreme 1000Base-SX + 14e4 0004 NetXtreme 1000Base-T 14e4 1028 NetXtreme 1000BaseTX - 14e4 1644 BCM5700 1000BaseTX + 14e4 1644 BCM5700 1000Base-T 1645 NetXtreme BCM5701 Gigabit Ethernet 0e11 007c NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) 0e11 007d NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) 0e11 0085 NC7780 Gigabit Server Adapter (embedded, WOL) 0e11 0099 NC7780 Gigabit Server Adapter (embedded, WOL) 0e11 009a NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - 1028 0121 Broadcom BCM5701 1000BaseTX - 10b7 1004 3C996-SX 1000BaseSX - 10b7 1006 3C996B-T 1000BaseTX - 10b7 1007 3C1000-T 1000BaseTX - 10b7 1008 3C940-BR01 1000BaseTX - 14e4 0001 BCM5701 1000BaseTX - 14e4 0005 BCM5701 1000BaseTX - 14e4 0006 BCM5701 1000BaseTX - 14e4 0007 BCM5701 1000BaseSX - 14e4 0008 BCM5701 1000BaseTX - 14e4 8008 BCM5701 1000BaseTX + 0e11 00c1 NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) + 1028 0121 Broadcom BCM5701 1000Base-T + 10b7 1004 3C996-SX 1000Base-SX + 10b7 1006 3C996B-T 1000Base-T + 10b7 1007 3C1000-T 1000Base-T + 10b7 1008 3C940-BR01 1000Base-T + 14e4 0001 BCM5701 1000Base-T + 14e4 0005 BCM5701 1000Base-T + 14e4 0006 BCM5701 1000Base-T + 14e4 0007 BCM5701 1000Base-SX + 14e4 0008 BCM5701 1000Base-T + 14e4 8008 BCM5701 1000Base-T 1646 NetXtreme BCM5702 Gigabit Ethernet 0e11 00bb NC7760 1000BaseTX 1028 0126 Broadcom BCM5702 1000BaseTX @@ -5069,10 +5250,47 @@ 14e4 8009 BCM5703 1000BaseTX 14e4 800a BCM5703 1000BaseTX 1648 NetXtreme BCM5704 Gigabit Ethernet + 0e11 00cf NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00d0 NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00d1 NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 10b7 2000 3C998-T Dual Port 10/100/1000 PCI-X + 10b7 3000 3C999-T Quad Port 10/100/1000 PCI-X + 1166 1648 NetXtreme CIOB-E 1000Base-T 164d NetXtreme BCM5702FE Gigabit Ethernet - 16a6 NetXtreme BCM5702X Gigabit Ethernet - 16a7 NetXtreme BCM5703X Gigabit Ethernet - 4212 BCM v.90 56k modem + 1653 NetXtreme BCM5705 Gigabit Ethernet + 165d NetXtreme BCM5705M Gigabit Ethernet + 1696 NetXtreme BCM5782 Gigabit Ethernet + 14e4 000d NetXtreme BCM5782 1000Base-T + 16a6 NetXtreme BCM5702 Gigabit Ethernet + 0e11 00bb NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + 1028 0126 BCM5702 1000Base-T + 14e4 000c BCM5702 1000Base-T + 14e4 8009 BCM5702 1000Base-T + 16a7 NetXtreme BCM5703 Gigabit Ethernet + 0e11 00ca NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 0e11 00cb NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + 14e4 0009 NetXtreme BCM5703 1000Base-T + 14e4 000a NetXtreme BCM5703 1000Base-SX + 14e4 000b NetXtreme BCM5703 1000Base-T + 14e4 800a NetXtreme BCM5703 1000Base-T + 16a8 NetXtreme BCM5704S Gigabit Ethernet + 10b7 2001 3C998-SX Dual Port 1000-SX PCI-X + 16c6 NetXtreme BCM5702 Gigabit Ethernet + 10b7 1100 3C1000B-T 10/100/1000 PCI + 14e4 000c BCM5702 1000Base-T + 14e4 8009 BCM5702 1000Base-T + 16c7 NetXtreme BCM5703 Gigabit Ethernet + 14e4 0009 NetXtreme BCM5703 1000Base-T + 14e4 000a NetXtreme BCM5703 1000Base-SX + 4210 BCM4210 iLine10 HomePNA 2.0 + 4211 BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem + 4212 BCM4212 v.90 56k modem + 4301 BCM4301 802.11b + 4401 BCM4401 100Base-T + 4402 BCM4402 Integrated 10/100BaseT + 4410 BCM4413 iLine32 HomePNA 2.0 + 4411 BCM4413 V.90 56k modem + 4412 BCM4413 10/100BaseT 5820 BCM5820 Crypto Accelerator 5821 BCM5821 Crypto Accelerator 14e5 Pixelfusion Ltd @@ -5294,6 +5512,10 @@ 1522 0600 RockForce+ 2 Port V.90 Data/Fax/Voice Modem 1523 MUSIC Semiconductors 1524 ENE Technology Inc + 1211 CB1211 Cardbus Controller + 1225 CB1225 Cardbus Controller + 1410 CB1410 Cardbus Controller + 1420 CB1420 Cardbus Controller 1525 IMPACT Technologies 1526 ISS, Inc 1527 SOLECTRON @@ -5324,6 +5546,7 @@ 1541 MACHONE Communications 1542 VIVID Technology Inc 1543 SILICON Laboratories + 4c22 Si3036 MC'97 DAA 1544 DCM DATA Systems 1545 VISIONTEK 1546 IOI Technology Corp @@ -5553,6 +5776,7 @@ 1607 Lava Semiconductor Manufacturing Inc 1608 Automated Wagering International 1609 Scimetric Instruments Inc +1612 Telesynergy Research Inc. 1619 FarSite Communications Ltd 0400 FarSync T2P (2 port X.21/V.35/V.24) 0440 FarSync T4P (4 port X.21/V.35/V.24) @@ -5561,15 +5785,28 @@ 2002 Fast Universal Data Output 1638 Standard Microsystems Corp [SMC] 1100 SMC2602W EZConnect / Addtron AWA-100 +163c Smart Link Ltd. + 5449 SmartPCI561 Modem 1657 Brocade Communications Systems, Inc. +165a Epix Inc + c100 PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] + d200 PIXCI(R) D2X Digital Video Capture Board [custom QL5232] + d300 PIXCI(R) D3X Digital Video Capture Board [custom QL5232] 165d Hsing Tech. Enterprise Co., Ltd. 1661 Worldspace Corp. -1668 Action Tec Electronics Inc +1668 Actiontec Electronics Inc +1681 Hercules +16ab Global Sun Technology Inc + 1102 PCMCIA-to-PCI Wireless Network Bridge +16be Creatix Polymedia GmbH 16ec U.S. Robotics 3685 Wireless Access PCI Adapter Model 022415 16f6 VideoTele.com, Inc. +1705 Digital First, Inc. 170b NetOctave Inc 170c YottaYotta Inc. +172a Accelerated Encryption +1737 Linksys 173b Altima (nee Broadcom) 03e8 AC1000 Gigabit Ethernet 03ea AC9100 Gigabit Ethernet @@ -5577,6 +5814,7 @@ 8139 ROL/F-100 Fast Ethernet Adapter with ROL 174b PC Partner Limited 175e Sanera Systems, Inc. +1787 Hightech Information System Ltd. # also used by Struck Innovative Systeme for joint developments 1796 Research Centre Juelich 0001 SIS1100 [Gigabit link] @@ -5585,7 +5823,15 @@ 0004 CAMAC Controller 0005 PROFIBUS 0006 AMCC HOTlink +1799 Belkin +17af Hightech Information System Ltd. 1813 Ambient Technologies Inc + 4000 HaM controllerless modem + 16be 0001 V9x HAM Data Fax Modem + 4100 HaM plus Data Fax Modem + 16be 0002 V9x HAM 1394 +1851 Microtune, Inc. +1852 Anritsu Corp. 1a08 Sierra semiconductor 0000 SC15064 1b13 Jaton Corp @@ -5641,6 +5887,8 @@ 3d3d 0127 Permedia3 Create! 000a GLINT R3 3d3d 0121 Oxygen VX1 + 000c GLINT R3 [Oxygen VX1] + 3d3d 0144 Oxygen VX1-4X AGP [Permedia 4] 0100 Permedia II 2D+3D 1004 Permedia 3d04 Permedia @@ -5821,6 +6069,7 @@ 8c10 86C270-294 Savage/MX-MV 8c11 82C270-294 Savage/MX 8c12 86C270-294 Savage/IX-MV + 1014 017f ThinkPad T20 8c13 86C270-294 Savage/IX 8c22 SuperSavage MX/128 8c24 SuperSavage MX/64 @@ -5889,7 +6138,7 @@ 0e11 b123 NC1634 Gigabit Ethernet Adapter (1000-SX) 1014 0119 Netfinity Gigabit Ethernet SX Adapter 8086 1000 PRO/1000 Gigabit Server Adapter - 1001 82543GC Gigabit Ethernet Controller + 1001 82543GC Gigabit Ethernet Controller (Fiber) 0e11 004a NC6136 Gigabit Server Adapter 1014 01ea Netfinity Gigabit Ethernet SX Adapter 8086 1003 PRO/1000 F Server Adapter @@ -5897,38 +6146,39 @@ 8086 200e Pro 100 LAN+Modem 56 Cardbus II 8086 2013 Pro 100 SR Mobile Combo Adapter 8086 2017 Pro 100 S Combo Mobile Adapter - 1004 82543GC Gigabit Ethernet Controller + 1004 82543GC Gigabit Ethernet Controller (Copper) 0e11 0049 NC7132 Gigabit Upgrade Module 0e11 b1a4 NC7131 Gigabit Server Adapter 1014 10f2 Gigabit Ethernet Server Adapter 8086 1004 PRO/1000 T Server Adapter 8086 2004 PRO/1000 T Server Adapter - 1008 82544EI Gigabit Ethernet Controller + 1008 82544EI Gigabit Ethernet Controller (Copper) 8086 1107 PRO/1000 XT Server Adapter 8086 2107 PRO/1000 XT Server Adapter 8086 2110 PRO/1000 XT Server Adapter - 1009 82544EI Gigabit Ethernet Controller + 1009 82544EI Gigabit Ethernet Controller (Fiber) 8086 1109 PRO/1000 XF Server Adapter 8086 2109 PRO/1000 XF Server Adapter - 100c 82544GC Gigabit Ethernet Controller + 100c 82544GC Gigabit Ethernet Controller (Copper) 8086 1112 PRO/1000 T Desktop Adapter 8086 2112 PRO/1000 T Desktop Adapter - 100d 82544GC Gigabit Ethernet Controller + 100d 82544GC Gigabit Ethernet Controller (LOM) 100e 82540EM Gigabit Ethernet Controller 8086 001e PRO/1000 MT Desktop Adapter 8086 002e PRO/1000 MT Desktop Adapter - 100f 82545EM Gigabit Ethernet Controller + 100f 82545EM Gigabit Ethernet Controller (Copper) 8086 1001 PRO/1000 MT Server Adapter - 1010 82546EB Gigabit Ethernet Controller + 1010 82546EB Gigabit Ethernet Controller (Copper) 8086 1011 PRO/1000 MT Dual Port Server Adapter - 1011 82545EM Gigabit Ethernet Controller + 1011 82545EM Gigabit Ethernet Controller (Fiber) 8086 1002 PRO/1000 MF Server Adapter - 1012 82546EB Gigabit Ethernet Controller + 1012 82546EB Gigabit Ethernet Controller (Fiber) 8086 1012 PRO/1000 MF Dual Port Server Adapter + 1015 82540EM Gigabit Ethernet Controller (LOM) 1029 82559 Ethernet Controller 1030 82559 InBusiness 10/100 1031 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller - 1014 0209 ThinkPad A30p (2653-64G) + 1014 0209 ThinkPad A30p/T30 104d 80e7 Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 107b 5350 EtherExpress PRO/100 VE 1179 0001 EtherExpress PRO/100 VE @@ -5948,8 +6198,11 @@ 103c 82801BD PRO/100 VM (CNR) Ethernet Controller 103d 82801BD PRO/100 VE (MOB) Ethernet Controller 103e 82801BD PRO/100 VM (MOB) Ethernet Controller + 1040 536EP Data Fax Modem + 16be 1040 V.9X DSP Data Fax Modem 1059 82551QM Ethernet Controller 1130 82815 815 Chipset Host Bridge and Memory Controller Hub + 1025 1016 Travelmate 612 TX 1043 8027 TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 1131 82815 815 Chipset AGP Bridge @@ -5958,6 +6211,7 @@ 104d 80df Vaio PCG-FX403 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller 8086 1161 82806AA PCI64 Hub APIC + 1162 Xscale 80200 Big Endian Companion Chip 1200 Intel IXP1200 Network Processor 172a 0000 AEP SSL Accelerator 1209 82559ER @@ -5999,13 +6253,16 @@ 1014 01f2 10/100 Ethernet Server Adapter 1014 0207 Ethernet Pro/100 S 1014 0232 10/100 Dual Port Server Adapter + 1014 023a ThinkPad R30 1014 105c Netfinity 10/100 + 1014 2205 ThinkPad A22p 1014 305c 10/100 EtherJet Management Adapter 1014 405c 10/100 EtherJet Adapter with Alert on LAN 1014 505c 10/100 EtherJet Secure Management Adapter 1014 605c 10/100 EtherJet Secure Management Adapter 1014 705c 10/100 Netfinity 10/100 Ethernet Security Adapter 1014 805c 10/100 Netfinity 10/100 Ethernet Security Adapter + 1028 009b PowerEdge 2550 1033 8000 PC-9821X-B06 1033 8016 PK-UG-X006 1033 801f PK-UG-X006 @@ -6190,17 +6447,21 @@ 104d 80df Vaio PCG-FX403 147b 0507 TH7II-RAID 2443 82801BA/BAM SMBus + 1025 1016 Travelmate 612 TX 1043 8027 TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 147b 0507 TH7II-RAID 2444 82801BA/BAM USB (Hub #2) + 1025 1016 Travelmate 612 TX 104d 80df Vaio PCG-FX403 147b 0507 TH7II-RAID 2445 82801BA/BAM AC'97 Audio + 1025 1016 Travelmate 612 TX 104d 80df Vaio PCG-FX403 1462 3370 STAC9721 AC 147b 0507 TH7II-RAID 2446 82801BA/BAM AC'97 Modem + 1025 1016 Travelmate 612 TX 104d 80df Vaio PCG-FX403 2448 82801BAM/CAM PCI Bridge 2449 82801BA/BAM/CA/CAM Ethernet Controller @@ -6247,27 +6508,30 @@ 245e 82801E PCI Bridge 2480 82801CA ISA Bridge (LPC) 2482 82801CA/CAM USB (Hub #1) - 1014 0220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0220 ThinkPad T23/A30p/T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 2483 82801CA/CAM SMBus - 1014 0220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0220 ThinkPad T23/A30p/T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 2484 82801CA/CAM USB (Hub #2) - 1014 0220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0220 ThinkPad T23/A30p/T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 2485 82801CA/CAM AC'97 Audio - 1014 0222 ThinkPad T23 (2647-4MG) + 1014 0222 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0508 ThinkPad T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 2486 82801CA/CAM AC'97 Modem 1014 0223 ThinkPad A30p (2653-64G) 1014 0503 ThinkPad R31 2656BBG + 1014 051a ThinkPad T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 134d 4c21 Dell Inspiron 2100 internal modem + 14f1 5421 MD56ORD V.92 MDC Modem 2487 82801CA/CAM USB (Hub #3) - 1014 0220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0220 ThinkPad T23/A30p/T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 248a 82801CAM IDE U100 - 1014 0220 ThinkPad T23 (2647-4MG) or A30p (2653-64G) + 1014 0220 ThinkPad T23/A30p/T30 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 248b 82801CA IDE U100 248c 82801CAM ISA Bridge (LPC) @@ -6416,6 +6680,8 @@ 5575 AVA-2930 5578 AIC-7855 5647 ANA-7711 TCP Offload Engine + 9004 7710 ANA-7711F TCP Offload Engine - Optical + 9004 7711 ANA-7711LP TCP Offload Engine - Copper 5675 AIC-755x 5678 AIC-7856 5775 AIC-755x @@ -6539,9 +6805,32 @@ 00c1 AIC-7899B U160/m 00c3 AIC-7899D U160/m 00c5 RAID subsystem HBA + 1028 00c5 PowerEdge 2550 00cf AIC-7899P U160/m + 1028 00d1 PowerEdge 2550 + 0250 ServeRAID Controller + 1014 0279 ServeRAID-xx + 1014 028c ServeRAID-xx 0285 AAC-RAID 1028 0287 PowerEdge Expandable RAID Controller 320/DC + 8000 ASC-29320A U320 + 800f AIC-7901 U320 + 8010 ASC-39320 U320 + 8011 ASC-32320D U320 + 0e11 00ac U320 + 9005 0041 ASC-39320D U320 + 8012 ASC-29320 U320 + 8013 ASC-29320B U320 + 8014 ASC-29320LP U320 + 801e AIC-7901A U320 + 801f AIC-7902 U320 + 8090 ASC-39320 U320 w/HostRAID + 8091 ASC-39320D U320 w/HostRAID + 8092 ASC-29320 U320 w/HostRAID + 8093 ASC-29320B U320 w/HostRAID + 8094 ASC-29320LP U320 w/HostRAID + 809e AIC-7901A U320 w/HostRAID + 809f AIC-7902 U320 w/HostRAID 907f Atronics 2015 IDE-2015PL 919a Gigapixel Corp @@ -6562,6 +6851,8 @@ a727 3Com Corporation aa42 Scitex Digital Video ac1e Digital Receiver Technology Inc b1b3 Shiva Europe Limited +# Pinnacle should be 11bd, but they got it wrong several times --mj +bd11 Pinnacle Systems, Inc. (Wrong ID) c001 TSI Telsys c0a9 Micron/Crucial Technology c0de Motorola @@ -6569,6 +6860,9 @@ c0fe Motion Engineering, Inc. ca50 Varian Australia Pty Ltd cafe Chrysalis-ITS cccc Catapult Communications +cddd Tyzx, Inc. + 0101 DeepSea 1 High Speed Stereo Vision Frame Grabber + 0200 DeepSea 2 High Speed Stereo Vision Frame Grabber d4d4 Dy4 Systems Inc 0601 PCI Mezzanine Card d531 I+ME ACTIA GmbH @@ -6577,12 +6871,17 @@ dead Indigita Corporation e000 Winbond e000 W89C940 e159 Tiger Jet Network Inc. - 0001 Model 300 128k + 0001 Model 300 128k [Catawba TJ] 0059 0001 128k ISDN-S/T Adapter 0059 0003 128k ISDN-U Adapter 0002 Tiger100APC ISDN chipset e4bf EKF Elektronik GmbH ea01 Eagle Technology +# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. +ea60 RME + 9896 Digi32 + 9897 Digi32 Pro + 9898 Digi32/8 eabb Aashima Technology B.V. eace Endace Measurement Systems, Ltd 3100 DAG 3.10 OC-3/OC-12 @@ -6598,12 +6897,24 @@ eace Endace Measurement Systems, Ltd 422e DAG 4.2E Dual Gigabit Ethernet ec80 Belkin Corporation ec00 F5D6000 -ecc0 Echo Corporation +ecc0 Echo Digital Audio Corporation + 0050 Gina24_301 + 0051 Gina24_361 + 0060 Layla24 + 0070 Mona_301_80 + 0071 Mona_301_66 + 0072 Mona_361 + 0080 Mia edd8 ARK Logic Inc a091 1000PV [Stingray] a099 2000PV [Stingray] a0a1 2000MT a0a9 2000MI +f1d0 AJA Video +# All boards I have seen have this ID not efac, though all docs say efac... + cafe KONA SD SMPTE 259M I/O + efac KONA SD SMPTE 259M I/O + facd KONA HD SMPTE 292M I/O fa57 Fast Search & Transfer ASA febd Ultraview Corp. feda Epigram Inc diff --git a/drivers/pcmcia/sa1100_jornada720.c b/drivers/pcmcia/sa1100_jornada720.c index 2563902ec01a..a7bafc5687e7 100644 --- a/drivers/pcmcia/sa1100_jornada720.c +++ b/drivers/pcmcia/sa1100_jornada720.c @@ -6,9 +6,12 @@ */ #include <linux/kernel.h> #include <linux/sched.h> +#include <linux/device.h> +#include <linux/errno.h> #include <linux/init.h> #include <asm/hardware.h> +#include <asm/hardware/sa1111.h> #include <asm/mach-types.h> #include "sa1100_generic.h" @@ -76,6 +79,9 @@ printk("%s(): config socket %d vcc %d vpp %d\n", __FUNCTION__, case 50: pa_dwr_set = SOCKET1_POWER; break; } break; + + default: + return -1; } if (conf->vpp != conf->vcc && conf->vpp != 0) { @@ -90,7 +96,7 @@ printk("%s(): config socket %d vcc %d vpp %d\n", __FUNCTION__, local_irq_save(flags); PA_DWR = (PA_DWR & ~pa_dwr_mask) | pa_dwr_set; - locla_irq_restore(flags); + local_irq_restore(flags); } return ret; @@ -117,7 +123,7 @@ int __init pcmcia_jornada720_init(void) return ret; } -void __exit pcmcia_jornada720_exit(void) +void __devexit pcmcia_jornada720_exit(void) { sa1100_unregister_pcmcia(&jornada720_pcmcia_ops); } diff --git a/drivers/pcmcia/sa1111_generic.c b/drivers/pcmcia/sa1111_generic.c index 6e26b2111d8d..a9bdb592de71 100644 --- a/drivers/pcmcia/sa1111_generic.c +++ b/drivers/pcmcia/sa1111_generic.c @@ -36,11 +36,11 @@ int sa1111_pcmcia_init(struct pcmcia_init *init) int i, ret; for (i = ret = 0; i < ARRAY_SIZE(irqs); i++) { - set_irq_type(irqs[i].irq, IRQT_FALLING); ret = request_irq(irqs[i].irq, init->handler, SA_INTERRUPT, irqs[i].str, NULL); if (ret) break; + set_irq_type(irqs[i].irq, IRQT_FALLING); } if (i < ARRAY_SIZE(irqs)) { @@ -280,7 +280,7 @@ static int pcmcia_resume(struct device *dev, u32 level) static struct sa1111_driver pcmcia_driver = { .drv = { - .name = "SA1111 PCMCIA", + .name = "sa1111-pcmcia", .bus = &sa1111_bus_type, .probe = pcmcia_probe, .remove = __devexit_p(pcmcia_remove), diff --git a/drivers/video/tgafb.c b/drivers/video/tgafb.c index 8cc9094311e6..d124dfe0ae08 100644 --- a/drivers/video/tgafb.c +++ b/drivers/video/tgafb.c @@ -41,6 +41,8 @@ static int tgafb_blank(int, struct fb_info *); static void tgafb_init_fix(struct fb_info *); static void tgafb_imageblit(struct fb_info *, struct fb_image *); +static void tgafb_fillrect(struct fb_info *, struct fb_fillrect *); +static void tgafb_copyarea(struct fb_info *, struct fb_copyarea *); static int tgafb_pci_register(struct pci_dev *, const struct pci_device_id *); #ifdef MODULE @@ -60,8 +62,8 @@ static struct fb_ops tgafb_ops = { .fb_set_par = tgafb_set_par, .fb_setcolreg = tgafb_setcolreg, .fb_blank = tgafb_blank, - .fb_fillrect = cfb_fillrect, - .fb_copyarea = cfb_copyarea, + .fb_fillrect = tgafb_fillrect, + .fb_copyarea = tgafb_copyarea, .fb_imageblit = tgafb_imageblit, .fb_cursor = soft_cursor, }; @@ -95,10 +97,10 @@ tgafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) struct tga_par *par = (struct tga_par *)info->par; if (par->tga_type == TGA_TYPE_8PLANE) { - if (var->bits_per_pixel > 8) + if (var->bits_per_pixel != 8) return -EINVAL; } else { - if (var->bits_per_pixel > 32) + if (var->bits_per_pixel != 32) return -EINVAL; } @@ -111,6 +113,11 @@ tgafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) if ((var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) return -EINVAL; + /* Some of the acceleration routines assume the line width is + a multiple of 64 bytes. */ + if (var->xres * (par->tga_type == TGA_TYPE_8PLANE ? 1 : 4) % 64) + return -EINVAL; + return 0; } @@ -203,8 +210,6 @@ tgafb_set_par(struct fb_info *info) /* Write some more registers. */ TGA_WRITE_REG(par, 0xffffffff, TGA_PLANEMASK_REG); TGA_WRITE_REG(par, 0xffffffff, TGA_PIXELMASK_REG); - TGA_WRITE_REG(par, 0x12345678, TGA_BLOCK_COLOR0_REG); - TGA_WRITE_REG(par, 0x12345678, TGA_BLOCK_COLOR1_REG); /* Init video timing regs. */ TGA_WRITE_REG(par, htimings, TGA_HORIZ_REG); @@ -506,6 +511,14 @@ tgafb_blank(int blank, struct fb_info *info) * Acceleration. */ +/** + * tgafb_imageblit - REQUIRED function. Can use generic routines if + * non acclerated hardware and packed pixel based. + * Copies a image from system memory to the screen. + * + * @info: frame buffer structure that represents a single frame buffer + * @image: structure defining the image. + */ static void tgafb_imageblit(struct fb_info *info, struct fb_image *image) { @@ -547,7 +560,7 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) struct tga_par *par = (struct tga_par *) info->par; u32 fgcolor, bgcolor, dx, dy, width, height, vxres, vyres, pixelmask; unsigned long rincr, line_length, shift, pos, is8bpp; - unsigned long i, j, k; + unsigned long i, j; const unsigned char *data; void *regs_base, *fb_base; @@ -579,7 +592,7 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) regs_base = par->tga_regs_base; fb_base = par->tga_fb_base; - is8bpp = par->tga_type == TGA_TYPE_8PLANE; + is8bpp = info->var.bits_per_pixel == 8; /* Expand the color values to fill 32-bits. */ /* ??? Would be nice to notice colour changes elsewhere, so @@ -592,19 +605,23 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) bgcolor |= bgcolor << 8; bgcolor |= bgcolor << 16; } else { - fgcolor = ((u32 *)info->pseudo_palette)[fgcolor]; - bgcolor = ((u32 *)info->pseudo_palette)[bgcolor]; + if (fgcolor < 16) + fgcolor = ((u32 *)info->pseudo_palette)[fgcolor]; + if (bgcolor < 16) + bgcolor = ((u32 *)info->pseudo_palette)[bgcolor]; } __raw_writel(fgcolor, regs_base + TGA_FOREGROUND_REG); __raw_writel(bgcolor, regs_base + TGA_BACKGROUND_REG); /* Acquire proper alignment; set up the PIXELMASK register so that we only write the proper character cell. */ - pos = dy * line_length + dx; + pos = dy * line_length; if (is8bpp) { + pos += dx; shift = pos & 3; pos &= -4; } else { + pos += dx * 4; shift = (pos & 7) >> 2; pos &= -8; } @@ -663,8 +680,10 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) for (i = 0; i < height; ++i) { for (j = 0; j < bwidth; j += 4) { u32 mask = 0; - for (k = 0; k < 4; ++k) - mask |= bitrev[data[j+k]] << (k * 8); + mask |= bitrev[data[j+0]] << (0 * 8); + mask |= bitrev[data[j+1]] << (1 * 8); + mask |= bitrev[data[j+2]] << (2 * 8); + mask |= bitrev[data[j+3]] << (3 * 8); __raw_writel(mask, fb_base + pos + j*bincr); } pos += line_length; @@ -683,8 +702,8 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) for (i = 0; i < height; ++i) { u32 mask = 0; - for (k = 0; k < bwidth; ++k) - mask |= bitrev[data[k]] << (k * 8); + for (j = 0; j < bwidth; ++j) + mask |= bitrev[data[j]] << (j * 8); __raw_writel(mask, fb_base + pos); pos += line_length; data += rincr; @@ -710,9 +729,9 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) bwidth = (width / 8) & -2; for (i = 0; i < height; ++i) { for (j = 0; j < bwidth; j += 2) { - u32 mask; - mask = bitrev[data[j]]; - mask |= bitrev[data[j+1]] << 8; + u32 mask = 0; + mask |= bitrev[data[j+0]] << (0 * 8); + mask |= bitrev[data[j+1]] << (1 * 8); mask <<= shift; __raw_writel(mask, fb_base + pos + j*bincr); } @@ -751,6 +770,552 @@ tgafb_imageblit(struct fb_info *info, struct fb_image *image) regs_base + TGA_MODE_REG); } +/** + * tgafb_fillrect - REQUIRED function. Can use generic routines if + * non acclerated hardware and packed pixel based. + * Draws a rectangle on the screen. + * + * @info: frame buffer structure that represents a single frame buffer + * @rect: structure defining the rectagle and operation. + */ +static void +tgafb_fillrect(struct fb_info *info, struct fb_fillrect *rect) +{ + struct tga_par *par = (struct tga_par *) info->par; + int is8bpp = info->var.bits_per_pixel == 8; + u32 dx, dy, width, height, vxres, vyres, color; + unsigned long pos, align, line_length, i, j; + void *regs_base, *fb_base; + + dx = rect->dx; + dy = rect->dy; + width = rect->width; + height = rect->height; + vxres = info->var.xres_virtual; + vyres = info->var.yres_virtual; + line_length = info->fix.line_length; + regs_base = par->tga_regs_base; + fb_base = par->tga_fb_base; + + /* Crop the rectangle to the screen. */ + if (dx > vxres || dy > vyres || !width || !height) + return; + if (dx + width > vxres) + width = vxres - dx; + if (dy + height > vyres) + height = vyres - dy; + + pos = dy * line_length + dx * (is8bpp ? 1 : 4); + + /* ??? We could implement ROP_XOR with opaque fill mode + and a RasterOp setting of GXxor, but as far as I can + tell, this mode is not actually used in the kernel. + Thus I am ignoring it for now. */ + if (rect->rop != ROP_COPY) { + cfb_fillrect(info, rect); + return; + } + + /* Expand the color value to fill 8 pixels. */ + color = rect->color; + if (is8bpp) { + color |= color << 8; + color |= color << 16; + __raw_writel(color, regs_base + TGA_BLOCK_COLOR0_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR1_REG); + } else { + if (color < 16) + color = ((u32 *)info->pseudo_palette)[color]; + __raw_writel(color, regs_base + TGA_BLOCK_COLOR0_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR1_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR2_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR3_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR4_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR5_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR6_REG); + __raw_writel(color, regs_base + TGA_BLOCK_COLOR7_REG); + } + + /* The DATA register holds the fill mask for block fill mode. + Since we're not stippling, this is all ones. */ + __raw_writel(0xffffffff, regs_base + TGA_DATA_REG); + + /* Enable block fill mode. */ + __raw_writel((is8bpp + ? TGA_MODE_SBM_8BPP | TGA_MODE_BLOCK_FILL + : TGA_MODE_SBM_24BPP | TGA_MODE_BLOCK_FILL), + regs_base + TGA_MODE_REG); + wmb(); + + /* We can fill 2k pixels per operation. Notice blocks that fit + the width of the screen so that we can take advantage of this + and fill more than one line per write. */ + if (width == line_length) + width *= height, height = 1; + + /* The write into the frame buffer must be aligned to 4 bytes, + but we are allowed to encode the offset within the word in + the data word written. */ + align = (pos & 3) << 16; + pos &= -4; + + if (width <= 2048) { + u32 data; + + data = (width - 1) | align; + + for (i = 0; i < height; ++i) { + __raw_writel(data, fb_base + pos); + pos += line_length; + } + } else { + unsigned long Bpp = (is8bpp ? 1 : 4); + unsigned long nwidth = width & -2048; + u32 fdata, ldata; + + fdata = (2048 - 1) | align; + ldata = ((width & 2047) - 1) | align; + + for (i = 0; i < height; ++i) { + for (j = 0; j < nwidth; j += 2048) + __raw_writel(fdata, fb_base + pos + j*Bpp); + if (j < width) + __raw_writel(ldata, fb_base + pos + j*Bpp); + pos += line_length; + } + } + wmb(); + + /* Disable block fill mode. */ + __raw_writel((is8bpp + ? TGA_MODE_SBM_8BPP | TGA_MODE_SIMPLE + : TGA_MODE_SBM_24BPP | TGA_MODE_SIMPLE), + regs_base + TGA_MODE_REG); +} + +/** + * tgafb_copyarea - REQUIRED function. Can use generic routines if + * non acclerated hardware and packed pixel based. + * Copies on area of the screen to another area. + * + * @info: frame buffer structure that represents a single frame buffer + * @area: structure defining the source and destination. + */ + +/* Handle the special case of copying entire lines, e.g. during scrolling. + We can avoid a lot of needless computation in this case. In the 8bpp + case we need to use the COPY64 registers instead of mask writes into + the frame buffer to achieve maximum performance. */ + +static inline void +copyarea_line_8bpp(struct fb_info *info, u32 dy, u32 sy, + u32 height, u32 width) +{ + struct tga_par *par = (struct tga_par *) info->par; + void *tga_regs = par->tga_regs_base; + unsigned long dpos, spos, i, n64; + + /* Set up the MODE and PIXELSHIFT registers. */ + __raw_writel(TGA_MODE_SBM_8BPP | TGA_MODE_COPY, tga_regs+TGA_MODE_REG); + __raw_writel(0, tga_regs+TGA_PIXELSHIFT_REG); + wmb(); + + n64 = (height * width) / 64; + + if (dy < sy) { + spos = (sy + height) * width; + dpos = (dy + height) * width; + + for (i = 0; i < n64; ++i) { + spos -= 64; + dpos -= 64; + __raw_writel(spos, tga_regs+TGA_COPY64_SRC); + wmb(); + __raw_writel(dpos, tga_regs+TGA_COPY64_DST); + wmb(); + } + } else { + spos = sy * width; + dpos = dy * width; + + for (i = 0; i < n64; ++i) { + __raw_writel(spos, tga_regs+TGA_COPY64_SRC); + wmb(); + __raw_writel(dpos, tga_regs+TGA_COPY64_DST); + wmb(); + spos += 64; + dpos += 64; + } + } + + /* Reset the MODE register to normal. */ + __raw_writel(TGA_MODE_SBM_8BPP|TGA_MODE_SIMPLE, tga_regs+TGA_MODE_REG); +} + +static inline void +copyarea_line_32bpp(struct fb_info *info, u32 dy, u32 sy, + u32 height, u32 width) +{ + struct tga_par *par = (struct tga_par *) info->par; + void *tga_regs = par->tga_regs_base; + void *tga_fb = par->tga_fb_base; + void *src, *dst; + unsigned long i, n16; + + /* Set up the MODE and PIXELSHIFT registers. */ + __raw_writel(TGA_MODE_SBM_24BPP | TGA_MODE_COPY, tga_regs+TGA_MODE_REG); + __raw_writel(0, tga_regs+TGA_PIXELSHIFT_REG); + wmb(); + + n16 = (height * width) / 16; + + if (dy < sy) { + src = tga_fb + (sy + height) * width * 4; + dst = tga_fb + (dy + height) * width * 4; + + for (i = 0; i < n16; ++i) { + src -= 64; + dst -= 64; + __raw_writel(0xffff, src); + wmb(); + __raw_writel(0xffff, dst); + wmb(); + } + } else { + src = tga_fb + sy * width * 4; + dst = tga_fb + dy * width * 4; + + for (i = 0; i < n16; ++i) { + __raw_writel(0xffff, src); + wmb(); + __raw_writel(0xffff, dst); + wmb(); + src += 64; + dst += 64; + } + } + + /* Reset the MODE register to normal. */ + __raw_writel(TGA_MODE_SBM_24BPP|TGA_MODE_SIMPLE, tga_regs+TGA_MODE_REG); +} + +/* The general case of forward copy in 8bpp mode. */ +static inline void +copyarea_foreward_8bpp(struct fb_info *info, u32 dx, u32 dy, u32 sx, u32 sy, + u32 height, u32 width, u32 line_length) +{ + struct tga_par *par = (struct tga_par *) info->par; + unsigned long i, copied, left; + unsigned long dpos, spos, dalign, salign, yincr; + u32 smask_first, dmask_first, dmask_last; + int pixel_shift, need_prime, need_second; + unsigned long n64, n32, xincr_first; + void *tga_regs, *tga_fb; + + yincr = line_length; + if (dy > sy) { + dy += height - 1; + sy += height - 1; + yincr = -yincr; + } + + /* Compute the offsets and alignments in the frame buffer. + More than anything else, these control how we do copies. */ + dpos = dy * line_length + dx; + spos = sy * line_length + sx; + dalign = dpos & 7; + salign = spos & 7; + dpos &= -8; + spos &= -8; + + /* Compute the value for the PIXELSHIFT register. This controls + both non-co-aligned source and destination and copy direction. */ + if (dalign >= salign) + pixel_shift = dalign - salign; + else + pixel_shift = 8 - (salign - dalign); + + /* Figure out if we need an additional priming step for the + residue register. */ + need_prime = (salign > dalign); + if (need_prime) + dpos -= 8; + + /* Begin by copying the leading unaligned destination. Copy enough + to make the next destination address 32-byte aligned. */ + copied = 32 - (dalign + (dpos & 31)); + if (copied == 32) + copied = 0; + xincr_first = (copied + 7) & -8; + smask_first = dmask_first = (1ul << copied) - 1; + smask_first <<= salign; + dmask_first <<= dalign + need_prime*8; + if (need_prime && copied > 24) + copied -= 8; + left = width - copied; + + /* Care for small copies. */ + if (copied > width) { + u32 t; + t = (1ul << width) - 1; + t <<= dalign + need_prime*8; + dmask_first &= t; + left = 0; + } + + /* Attempt to use 64-byte copies. This is only possible if the + source and destination are co-aligned at 64 bytes. */ + n64 = need_second = 0; + if ((dpos & 63) == (spos & 63) + && (height == 1 || line_length % 64 == 0)) { + /* We may need a 32-byte copy to ensure 64 byte alignment. */ + need_second = (dpos + xincr_first) & 63; + if ((need_second & 32) != need_second) + printk(KERN_ERR "tgafb: need_second wrong\n"); + if (left >= need_second + 64) { + left -= need_second; + n64 = left / 64; + left %= 64; + } else + need_second = 0; + } + + /* Copy trailing full 32-byte sections. This will be the main + loop if the 64 byte loop can't be used. */ + n32 = left / 32; + left %= 32; + + /* Copy the trailing unaligned destination. */ + dmask_last = (1ul << left) - 1; + + tga_regs = par->tga_regs_base; + tga_fb = par->tga_fb_base; + + /* Set up the MODE and PIXELSHIFT registers. */ + __raw_writel(TGA_MODE_SBM_8BPP|TGA_MODE_COPY, tga_regs+TGA_MODE_REG); + __raw_writel(pixel_shift, tga_regs+TGA_PIXELSHIFT_REG); + wmb(); + + for (i = 0; i < height; ++i) { + unsigned long j; + void *sfb, *dfb; + + sfb = tga_fb + spos; + dfb = tga_fb + dpos; + if (dmask_first) { + __raw_writel(smask_first, sfb); + wmb(); + __raw_writel(dmask_first, dfb); + wmb(); + sfb += xincr_first; + dfb += xincr_first; + } + + if (need_second) { + __raw_writel(0xffffffff, sfb); + wmb(); + __raw_writel(0xffffffff, dfb); + wmb(); + sfb += 32; + dfb += 32; + } + + if (n64 && (((long)sfb | (long)dfb) & 63)) + printk(KERN_ERR + "tgafb: misaligned copy64 (s:%p, d:%p)\n", + sfb, dfb); + + for (j = 0; j < n64; ++j) { + __raw_writel(sfb - tga_fb, tga_regs+TGA_COPY64_SRC); + wmb(); + __raw_writel(dfb - tga_fb, tga_regs+TGA_COPY64_DST); + wmb(); + sfb += 64; + dfb += 64; + } + + for (j = 0; j < n32; ++j) { + __raw_writel(0xffffffff, sfb); + wmb(); + __raw_writel(0xffffffff, dfb); + wmb(); + sfb += 32; + dfb += 32; + } + + if (dmask_last) { + __raw_writel(0xffffffff, sfb); + wmb(); + __raw_writel(dmask_last, dfb); + wmb(); + } + + spos += yincr; + dpos += yincr; + } + + /* Reset the MODE register to normal. */ + __raw_writel(TGA_MODE_SBM_8BPP|TGA_MODE_SIMPLE, tga_regs+TGA_MODE_REG); +} + +/* The (almost) general case of backward copy in 8bpp mode. */ +static inline void +copyarea_backward_8bpp(struct fb_info *info, u32 dx, u32 dy, u32 sx, u32 sy, + u32 height, u32 width, u32 line_length, + struct fb_copyarea *area) +{ + struct tga_par *par = (struct tga_par *) info->par; + unsigned long i, left, yincr; + unsigned long depos, sepos, dealign, sealign; + u32 mask_first, mask_last; + unsigned long n32; + void *tga_regs, *tga_fb; + + yincr = line_length; + if (dy > sy) { + dy += height - 1; + sy += height - 1; + yincr = -yincr; + } + + /* Compute the offsets and alignments in the frame buffer. + More than anything else, these control how we do copies. */ + depos = dy * line_length + dx + width; + sepos = sy * line_length + sx + width; + dealign = depos & 7; + sealign = sepos & 7; + + /* ??? The documentation appears to be incorrect (or very + misleading) wrt how pixel shifting works in backward copy + mode, i.e. when PIXELSHIFT is negative. I give up for now. + Do handle the common case of co-aligned backward copies, + but frob everything else back on generic code. */ + if (dealign != sealign) { + cfb_copyarea(info, area); + return; + } + + /* We begin the copy with the trailing pixels of the + unaligned destination. */ + mask_first = (1ul << dealign) - 1; + left = width - dealign; + + /* Care for small copies. */ + if (dealign > width) { + mask_first ^= (1ul << (dealign - width)) - 1; + left = 0; + } + + /* Next copy full words at a time. */ + n32 = left / 32; + left %= 32; + + /* Finally copy the unaligned head of the span. */ + mask_last = -1 << (32 - left); + + tga_regs = par->tga_regs_base; + tga_fb = par->tga_fb_base; + + /* Set up the MODE and PIXELSHIFT registers. */ + __raw_writel(TGA_MODE_SBM_8BPP|TGA_MODE_COPY, tga_regs+TGA_MODE_REG); + __raw_writel(0, tga_regs+TGA_PIXELSHIFT_REG); + wmb(); + + for (i = 0; i < height; ++i) { + unsigned long j; + void *sfb, *dfb; + + sfb = tga_fb + sepos; + dfb = tga_fb + depos; + if (mask_first) { + __raw_writel(mask_first, sfb); + wmb(); + __raw_writel(mask_first, dfb); + wmb(); + } + + for (j = 0; j < n32; ++j) { + sfb -= 32; + dfb -= 32; + __raw_writel(0xffffffff, sfb); + wmb(); + __raw_writel(0xffffffff, dfb); + wmb(); + } + + if (mask_last) { + sfb -= 32; + dfb -= 32; + __raw_writel(mask_last, sfb); + wmb(); + __raw_writel(mask_last, dfb); + wmb(); + } + + sepos += yincr; + depos += yincr; + } + + /* Reset the MODE register to normal. */ + __raw_writel(TGA_MODE_SBM_8BPP|TGA_MODE_SIMPLE, tga_regs+TGA_MODE_REG); +} + +static void +tgafb_copyarea(struct fb_info *info, struct fb_copyarea *area) +{ + unsigned long dx, dy, width, height, sx, sy, vxres, vyres; + unsigned long line_length, bpp; + + dx = area->dx; + dy = area->dy; + width = area->width; + height = area->height; + sx = area->sx; + sy = area->sy; + vxres = info->var.xres_virtual; + vyres = info->var.yres_virtual; + line_length = info->fix.line_length; + + /* The top left corners must be in the virtual screen. */ + if (dx > vxres || sx > vxres || dy > vyres || sy > vyres) + return; + + /* Clip the destination. */ + if (dx + width > vxres) + width = vxres - dx; + if (dy + height > vyres) + height = vyres - dy; + + /* The source must be completely inside the virtual screen. */ + if (sx + width > vxres || sy + height > vyres) + return; + + bpp = info->var.bits_per_pixel; + + /* Detect copies of the entire line. */ + if (width * (bpp >> 3) == line_length) { + if (bpp == 8) + copyarea_line_8bpp(info, dy, sy, height, width); + else + copyarea_line_32bpp(info, dy, sy, height, width); + } + + /* ??? The documentation is unclear to me exactly how the pixelshift + register works in 32bpp mode. Since I don't have hardware to test, + give up for now and fall back on the generic routines. */ + else if (bpp == 32) + cfb_copyarea(info, area); + + /* Detect overlapping source and destination that requires + a backward copy. */ + else if (dy == sy && dx > sx && dx < sx + width) + copyarea_backward_8bpp(info, dx, dy, sx, sy, height, + width, line_length, area); + else + copyarea_foreward_8bpp(info, dx, dy, sx, sy, height, + width, line_length); +} + /* * Initialisation @@ -791,7 +1356,7 @@ tgafb_init_fix(struct fb_info *info) info->fix.smem_start = (size_t) par->tga_fb_base; info->fix.smem_len = info->fix.line_length * par->yres; info->fix.mmio_start = (size_t) par->tga_regs_base; - info->fix.mmio_len = 0x1000; /* Is this sufficient? */ + info->fix.mmio_len = 512; info->fix.xpanstep = 0; info->fix.ypanstep = 0; diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c index dc0eb28dd0e9..e5031b42c0fb 100644 --- a/fs/befs/linuxvfs.c +++ b/fs/befs/linuxvfs.c @@ -12,7 +12,7 @@ #include <linux/stat.h> #include <linux/nls.h> #include <linux/buffer_head.h> -#include <linux/statfs.h> +#include <linux/vfs.h> #include "befs.h" #include "btree.h" diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c index e6c2f2817d89..ee215f3e56fd 100644 --- a/fs/romfs/inode.c +++ b/fs/romfs/inode.c @@ -74,6 +74,7 @@ #include <linux/pagemap.h> #include <linux/smp_lock.h> #include <linux/buffer_head.h> +#include <linux/vfs.h> #include <asm/uaccess.h> diff --git a/include/asm-alpha/irq.h b/include/asm-alpha/irq.h index b7804cc7b1e1..1a06d47bb55d 100644 --- a/include/asm-alpha/irq.h +++ b/include/asm-alpha/irq.h @@ -31,7 +31,6 @@ # define NR_IRQS 32 #elif defined(CONFIG_ALPHA_ALCOR) || \ - defined(CONFIG_ALPHA_XLT) || \ defined(CONFIG_ALPHA_MIATA) || \ defined(CONFIG_ALPHA_RUFFIAN) || \ defined(CONFIG_ALPHA_RX164) || \ diff --git a/include/asm-arm/arch-iop310/memory.h b/include/asm-arm/arch-iop310/memory.h index e61bc5ddc48a..f4ae41eb9adb 100644 --- a/include/asm-arm/arch-iop310/memory.h +++ b/include/asm-arm/arch-iop310/memory.h @@ -6,6 +6,7 @@ #define __ASM_ARCH_MEMORY_H #include <linux/config.h> +#include <asm/arch/iop310.h> /* * Task size: 3GB diff --git a/include/asm-arm/current.h b/include/asm-arm/current.h index 921ee95e0d92..b3d68cd03f73 100644 --- a/include/asm-arm/current.h +++ b/include/asm-arm/current.h @@ -1,7 +1,7 @@ #ifndef _ASMARM_CURRENT_H #define _ASMARM_CURRENT_H -#include <asm/thread_info.h> +#include <linux/thread_info.h> static inline struct task_struct *get_current(void) __attribute__ (( __const__ )); diff --git a/include/asm-arm/dma-mapping.h b/include/asm-arm/dma-mapping.h index e7e16901f686..dd85f46611e7 100644 --- a/include/asm-arm/dma-mapping.h +++ b/include/asm-arm/dma-mapping.h @@ -1 +1,303 @@ -#include <asm-generic/dma-mapping.h> +#ifndef ASMARM_DMA_MAPPING_H +#define ASMARM_DMA_MAPPING_H + +#ifdef __KERNEL__ + +#include <linux/config.h> +#include <linux/mm.h> /* need struct page */ + +#include <asm/scatterlist.h> + +/* + * DMA-consistent mapping functions. These allocate/free a region of + * uncached, unwrite-buffered mapped memory space for use with DMA + * devices. This is the "generic" version. The PCI specific version + * is in pci.h + */ +extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle); +extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); +extern void consistent_sync(void *kaddr, size_t size, int rw); + +/* + * For SA-1111 these functions are "magic" and utilize bounce + * bufferes as needed to work around SA-1111 DMA bugs. + */ +dma_addr_t sa1111_map_single(void *, size_t, int); +void sa1111_unmap_single(dma_addr_t, size_t, int); +int sa1111_map_sg(struct scatterlist *, int, int); +void sa1111_unmap_sg(struct scatterlist *, int, int); +void sa1111_dma_sync_single(dma_addr_t, size_t, int); +void sa1111_dma_sync_sg(struct scatterlist *, int, int); + +#ifdef CONFIG_SA1111 + +extern struct bus_type sa1111_bus_type; + +#define dmadev_is_sa1111(dev) ((dev)->bus == &sa1111_bus_type) + +#else +#define dmadev_is_sa1111(dev) (0) +#endif + +/* + * Return whether the given device DMA address mask can be supported + * properly. For example, if your device can only drive the low 24-bits + * during PCI bus mastering, then you would pass 0x00ffffff as the mask + * to this function. + */ +static inline int dma_supported(struct device *dev, u64 mask) +{ + return 1; +} + +static inline int dma_set_mask(struct device *dev, u64 dma_mask) +{ + if (!dev->dma_mask || !dma_supported(dev, dma_mask)) + return -EIO; + + *dev->dma_mask = dma_mask; + + return 0; +} + +static inline int dma_get_cache_alignment(void) +{ + return 32; +} + +static inline int dma_is_consistent(dma_addr_t handle) +{ + return 0; +} + +/** + * dma_alloc_coherent - allocate consistent memory for DMA + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @size: required memory size + * @handle: bus-specific DMA address + * + * Allocate some uncached, unbuffered memory for a device for + * performing DMA. This function allocates pages, and will + * return the CPU-viewed address, and sets @handle to be the + * device-viewed address. + */ +static inline void * +dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle) +{ + int gfp = GFP_KERNEL; + + if (dev == NULL || dmadev_is_sa1111(dev) || *dev->dma_mask != 0xffffffff) + gfp |= GFP_DMA; + + return consistent_alloc(gfp, size, handle); +} + +/** + * dma_free_coherent - free memory allocated by dma_alloc_coherent + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @size: size of memory originally requested in dma_alloc_coherent + * @cpu_addr: CPU-view address returned from dma_alloc_coherent + * @handle: device-view address returned from dma_alloc_coherent + * + * Free (and unmap) a DMA buffer previously allocated by + * dma_alloc_coherent(). + * + * References to memory and mappings associated with cpu_addr/handle + * during and after this call executing are illegal. + */ +static inline void +dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle) +{ + consistent_free(cpu_addr, size, handle); +} + +/** + * dma_map_single - map a single buffer for streaming DMA + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @cpu_addr: CPU direct mapped address of buffer + * @size: size of buffer to map + * @dir: DMA transfer direction + * + * Ensure that any data held in the cache is appropriately discarded + * or written back. + * + * The device owns this memory once this call has completed. The CPU + * can regain ownership by calling dma_unmap_single() or dma_sync_single(). + */ +static inline dma_addr_t +dma_map_single(struct device *dev, void *cpu_addr, size_t size, + enum dma_data_direction dir) +{ + if (dmadev_is_sa1111(dev)) + return sa1111_map_single(cpu_addr, size, dir); + + consistent_sync(cpu_addr, size, dir); + return __virt_to_bus((unsigned long)cpu_addr); +} + +/** + * dma_unmap_single - unmap a single buffer previously mapped + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @handle: DMA address of buffer + * @size: size of buffer to map + * @dir: DMA transfer direction + * + * Unmap a single streaming mode DMA translation. The handle and size + * must match what was provided in the previous dma_map_single() call. + * All other usages are undefined. + * + * After this call, reads by the CPU to the buffer are guaranteed to see + * whatever the device wrote there. + */ +static inline void +dma_unmap_single(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) +{ + if (dmadev_is_sa1111(dev)) + sa1111_unmap_single(handle, size, dir); + + /* nothing to do */ +} + +#if 0 +static inline dma_addr_t +dma_map_page(struct device *dev, struct page *page, unsigned long off, + size_t size, enum dma_data_direction dir) +{ + /* fixme */ +} + +static inline void +dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) +{ + /* fixme */ +} +#endif + +/** + * dma_map_sg - map a set of SG buffers for streaming mode DMA + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Map a set of buffers described by scatterlist in streaming + * mode for DMA. This is the scather-gather version of the + * above pci_map_single interface. Here the scatter gather list + * elements are each tagged with the appropriate dma address + * and length. They are obtained via sg_dma_{address,length}(SG). + * + * NOTE: An implementation may be able to use a smaller number of + * DMA address/length pairs than there are SG table elements. + * (for example via virtual mapping capabilities) + * The routine returns the number of addr/length pairs actually + * used, at most nents. + * + * Device ownership issues as mentioned above for pci_map_single are + * the same here. + */ +static inline int +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + if (dmadev_is_sa1111(dev)) + return sa1111_map_sg(sg, nents, dir); + + for (i = 0; i < nents; i++, sg++) { + char *virt; + + sg->dma_address = page_to_bus(sg->page) + sg->offset; + virt = page_address(sg->page) + sg->offset; + consistent_sync(virt, sg->length, dir); + } + + return nents; +} + +/** + * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Unmap a set of streaming mode DMA translations. + * Again, CPU read rules concerning calls here are the same as for + * pci_unmap_single() above. + */ +static inline void +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + if (dmadev_is_sa1111(dev)) { + sa1111_unmap_sg(sg, nents, dir); + return; + } + + /* nothing to do */ +} + +/** + * dma_sync_single + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @handle: DMA address of buffer + * @size: size of buffer to map + * @dir: DMA transfer direction + * + * Make physical memory consistent for a single streaming mode DMA + * translation after a transfer. + * + * If you perform a pci_map_single() but wish to interrogate the + * buffer using the cpu, yet do not wish to teardown the PCI dma + * mapping, you must call this function before doing so. At the + * next point you give the PCI dma address back to the card, the + * device again owns the buffer. + */ +static inline void +dma_sync_single(struct device *dev, dma_addr_t handle, size_t size, + enum dma_data_direction dir) +{ + if (dmadev_is_sa1111(dev)) { + sa1111_dma_sync_single(handle, size, dir); + return; + } + + consistent_sync((void *)__bus_to_virt(handle), size, dir); +} + +/** + * dma_sync_sg + * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Make physical memory consistent for a set of streaming + * mode DMA translations after a transfer. + * + * The same as pci_dma_sync_single but for a scatter-gather list, + * same rules and usage. + */ +static inline void +dma_sync_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir) +{ + int i; + + if (dmadev_is_sa1111(dev)) { + sa1111_dma_sync_sg(sg, nents, dir); + return; + } + + for (i = 0; i < nents; i++, sg++) { + char *virt = page_address(sg->page) + sg->offset; + consistent_sync(virt, sg->length, dir); + } +} + +#endif /* __KERNEL__ */ +#endif diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index 11aa8ea1d9e2..1dc1dd5d611a 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h @@ -268,16 +268,6 @@ extern void __iounmap(void *addr); #endif /* - * DMA-consistent mapping functions. These allocate/free a region of - * uncached, unwrite-buffered mapped memory space for use with DMA - * devices. This is the "generic" version. The PCI specific version - * is in pci.h - */ -extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle); -extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); -extern void consistent_sync(void *vaddr, size_t size, int rw); - -/* * can the hardware map this into one segment or not, given no other * constraints. */ diff --git a/include/asm-arm/irq.h b/include/asm-arm/irq.h index f47774aab014..6a3af2bb3b1d 100644 --- a/include/asm-arm/irq.h +++ b/include/asm-arm/irq.h @@ -40,7 +40,8 @@ extern void enable_irq(unsigned int); #define IRQT_PROBE (1 << 4) int set_irq_type(unsigned int irq, unsigned int type); - +void disable_irq_wake(unsigned int irq); +void enable_irq_wake(unsigned int irq); int setup_irq(unsigned int, struct irqaction *); #endif diff --git a/include/asm-arm/mach/irq.h b/include/asm-arm/mach/irq.h index d9971858d9cd..60ce4643c027 100644 --- a/include/asm-arm/mach/irq.h +++ b/include/asm-arm/mach/irq.h @@ -40,6 +40,10 @@ struct irqchip { * Set the type of the IRQ. */ int (*type)(unsigned int, unsigned int); + /* + * Set wakeup-enable on the selected IRQ + */ + int (*wake)(unsigned int, unsigned int); }; struct irqdesc { diff --git a/include/asm-arm/pci.h b/include/asm-arm/pci.h index aa08b2c39232..7760592d853f 100644 --- a/include/asm-arm/pci.h +++ b/include/asm-arm/pci.h @@ -3,36 +3,20 @@ #ifdef __KERNEL__ #include <linux/config.h> -#include <linux/mm.h> /* bah! */ +#include <linux/dma-mapping.h> -#include <asm/arch/hardware.h> -#include <asm/scatterlist.h> -#include <asm/page.h> -#include <asm/io.h> - -struct pci_dev; +#include <asm/hardware.h> /* for PCIBIOS_MIN_* */ +#ifdef CONFIG_SA1111 /* - * For SA-1111 these functions are "magic" and utilize bounce - * buffers as need to workaround SA-1111 DMA bugs. They are called in - * place of their pci_* counterparts when dev_is_sa1111() returns true. + * Keep the SA1111 DMA-mapping tricks until the USB layer gets + * properly converted to the new DMA-mapping API, at which time + * most of this file can die. */ -dma_addr_t sa1111_map_single(struct pci_dev *, void *, size_t, int); -void sa1111_unmap_single(struct pci_dev *, dma_addr_t, size_t, int); -int sa1111_map_sg(struct pci_dev *, struct scatterlist *, int, int); -void sa1111_unmap_sg(struct pci_dev *, struct scatterlist *, int, int); -void sa1111_dma_sync_single(struct pci_dev *, dma_addr_t, size_t, int); -void sa1111_dma_sync_sg(struct pci_dev *, struct scatterlist *, int, int); - -#ifdef CONFIG_SA1111 - #define SA1111_FAKE_PCIDEV ((struct pci_dev *) 1111) -#define dev_is_sa1111(dev) (dev == SA1111_FAKE_PCIDEV) - +#define pcidev_is_sa1111(dev) (dev == SA1111_FAKE_PCIDEV) #else - -#define dev_is_sa1111(dev) (0) - +#define pcidev_is_sa1111(dev) (0) #endif @@ -46,200 +30,116 @@ static inline void pcibios_penalize_isa_irq(int irq) /* We don't do dynamic PCI IRQ allocation */ } -/* The PCI address space does equal the physical memory - * address space. The networking and block device layers use - * this boolean for bounce buffer decisions. +/* + * The PCI address space does equal the physical memory address space. + * The networking and block device layers use this boolean for bounce + * buffer decisions. */ #define PCI_DMA_BUS_IS_PHYS (0) -/* Allocate and map kernel buffer using consistent mode DMA for a device. - * hwdev should be valid struct pci_dev pointer for PCI devices, - * NULL for PCI-like buses (ISA, EISA). - * Returns non-NULL cpu-view pointer to the buffer if successful and - * sets *dma_addrp to the pci side dma address as well, else *dma_addrp - * is undefined. - */ -extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *handle); +static inline void * +pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *handle) +{ + int gfp = GFP_KERNEL; + + if (hwdev == NULL || pcidev_is_sa1111(hwdev) || + hwdev->dma_mask != 0xffffffff) + gfp |= GFP_DMA; + + return consistent_alloc(gfp, size, handle); +} -/* Free and unmap a consistent DMA buffer. - * cpu_addr is what was returned from pci_alloc_consistent, - * size must be the same as what as passed into pci_alloc_consistent, - * and likewise dma_addr must be the same as what *dma_addrp was set to. - * - * References to the memory and mappings associated with cpu_addr/dma_addr - * past this call are illegal. - */ static inline void pci_free_consistent(struct pci_dev *hwdev, size_t size, void *vaddr, - dma_addr_t dma_handle) + dma_addr_t handle) { - consistent_free(vaddr, size, dma_handle); + dma_free_coherent(hwdev ? &hwdev->dev : NULL, size, vaddr, handle); } -/* Map a single buffer of the indicated size for DMA in streaming mode. - * The 32-bit bus address to use is returned. - * - * Once the device is given the dma address, the device owns this memory - * until either pci_unmap_single or pci_dma_sync_single is performed. - */ static inline dma_addr_t -pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) +pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int dir) { - if (dev_is_sa1111(hwdev)) - return sa1111_map_single(hwdev, ptr, size, direction); + if (pcidev_is_sa1111(hwdev)) + return sa1111_map_single(ptr, size, dir); - consistent_sync(ptr, size, direction); - return virt_to_bus(ptr); + return dma_map_single(hwdev ? &hwdev->dev : NULL, ptr, size, dir); } -/* Unmap a single streaming mode DMA translation. The dma_addr and size - * must match what was provided for in a previous pci_map_single call. All - * other usages are undefined. - * - * After this call, reads by the cpu to the buffer are guarenteed to see - * whatever the device wrote there. - */ static inline void -pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int direction) +pci_unmap_single(struct pci_dev *hwdev, dma_addr_t handle, size_t size, int dir) { - if (dev_is_sa1111(hwdev)) - sa1111_unmap_single(hwdev, dma_addr, size, direction); + if (pcidev_is_sa1111(hwdev)) { + sa1111_unmap_single(handle, size, dir); + return; + } - /* nothing to do */ + return dma_unmap_single(hwdev ? &hwdev->dev : NULL, handle, size, dir); } -/* - * Whether pci_unmap_{single,page} is a nop depends upon the - * configuration. - */ -#if defined(CONFIG_PCI) || defined(CONFIG_SA1111) -#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME; -#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME; -#define pci_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME) -#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL)) -#define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) -#define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) -#else -#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) -#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) -#define pci_unmap_addr(PTR, ADDR_NAME) (0) -#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) -#define pci_unmap_len(PTR, LEN_NAME) (0) -#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) -#endif /* CONFIG_PCI */ - -/* Map a set of buffers described by scatterlist in streaming - * mode for DMA. This is the scather-gather version of the - * above pci_map_single interface. Here the scatter gather list - * elements are each tagged with the appropriate dma address - * and length. They are obtained via sg_dma_{address,length}(SG). - * - * NOTE: An implementation may be able to use a smaller number of - * DMA address/length pairs than there are SG table elements. - * (for example via virtual mapping capabilities) - * The routine returns the number of addr/length pairs actually - * used, at most nents. - * - * Device ownership issues as mentioned above for pci_map_single are - * the same here. - */ static inline int -pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) +pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int dir) { - int i; - - if (dev_is_sa1111(hwdev)) - return sa1111_map_sg(hwdev, sg, nents, direction); - - for (i = 0; i < nents; i++, sg++) { - char *virt; - - sg->dma_address = page_to_bus(sg->page) + sg->offset; - virt = page_address(sg->page) + sg->offset; - consistent_sync(virt, sg->length, direction); - } + if (pcidev_is_sa1111(hwdev)) + return sa1111_map_sg(sg, nents, dir); - return nents; + return dma_map_sg(hwdev ? &hwdev->dev : NULL, sg, nents, dir); } -/* Unmap a set of streaming mode DMA translations. - * Again, cpu read rules concerning calls here are the same as for - * pci_unmap_single() above. - */ static inline void -pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) +pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int dir) { - if (dev_is_sa1111(hwdev)) { - sa1111_unmap_sg(hwdev, sg, nents, direction); + if (pcidev_is_sa1111(hwdev)) { + sa1111_unmap_sg(sg, nents, dir); return; } - /* nothing to do */ + return dma_unmap_sg(hwdev ? &hwdev->dev : NULL, sg, nents, dir); } -/* Make physical memory consistent for a single - * streaming mode DMA translation after a transfer. - * - * If you perform a pci_map_single() but wish to interrogate the - * buffer using the cpu, yet do not wish to teardown the PCI dma - * mapping, you must call this function before doing so. At the - * next point you give the PCI dma address back to the card, the - * device again owns the buffer. - */ static inline void -pci_dma_sync_single(struct pci_dev *hwdev, dma_addr_t dma_handle, size_t size, int direction) +pci_dma_sync_single(struct pci_dev *hwdev, dma_addr_t handle, size_t size, int dir) { - if (dev_is_sa1111(hwdev)) { - sa1111_dma_sync_single(hwdev, dma_handle, size, direction); + if (pcidev_is_sa1111(hwdev)) { + sa1111_dma_sync_single(handle, size, dir); return; } - consistent_sync(bus_to_virt(dma_handle), size, direction); + return dma_sync_single(hwdev ? &hwdev->dev : NULL, handle, size, dir); } -/* Make physical memory consistent for a set of streaming - * mode DMA translations after a transfer. - * - * The same as pci_dma_sync_single but for a scatter-gather list, - * same rules and usage. - */ static inline void -pci_dma_sync_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int direction) +pci_dma_sync_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int dir) { - int i; - - if (dev_is_sa1111(hwdev)) { - sa1111_dma_sync_sg(hwdev, sg, nelems, direction); + if (pcidev_is_sa1111(hwdev)) { + sa1111_dma_sync_sg(sg, nelems, dir); return; } - for (i = 0; i < nelems; i++, sg++) { - char *virt = page_address(sg->page) + sg->offset; - consistent_sync(virt, sg->length, direction); - } + return dma_sync_sg(hwdev ? &hwdev->dev : NULL, sg, nelems, dir); } -/* Return whether the given PCI device DMA address mask can - * be supported properly. For example, if your device can - * only drive the low 24-bits during PCI bus mastering, then - * you would pass 0x00ffffff as the mask to this function. - */ static inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask) { return 1; } -/* This isn't fine. */ +/* + * We don't support DAC DMA cycles. + */ #define pci_dac_dma_supported(pci_dev, mask) (0) -/* Return the index of the PCI controller for device PDEV. */ +/* + * Return the index of the PCI controller for device PDEV. + */ #define pci_controller_num(PDEV) (0) #if defined(CONFIG_SA1111) && !defined(CONFIG_PCI) -/* SA-1111 needs these prototypes even when !defined(CONFIG_PCI) */ - -/* kmem_cache style wrapper around pci_alloc_consistent() */ +/* + * SA-1111 needs these prototypes even when !defined(CONFIG_PCI) + * + * kmem_cache style wrapper around pci_alloc_consistent() + */ struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev, size_t size, size_t align, size_t allocation); void pci_pool_destroy (struct pci_pool *pool); @@ -248,6 +148,26 @@ void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle); void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr); #endif +/* + * Whether pci_unmap_{single,page} is a nop depends upon the + * configuration. + */ +#if defined(CONFIG_PCI) || defined(CONFIG_SA1111) +#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME; +#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME; +#define pci_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME) +#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL)) +#define pci_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) +#define pci_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) +#else +#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) +#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) +#define pci_unmap_addr(PTR, ADDR_NAME) (0) +#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) +#define pci_unmap_len(PTR, LEN_NAME) (0) +#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) +#endif + #define HAVE_PCI_MMAP extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); diff --git a/include/asm-arm/proc-armv/locks.h b/include/asm-arm/proc-armv/locks.h index d649d4c51220..d96dede22cc2 100644 --- a/include/asm-arm/proc-armv/locks.h +++ b/include/asm-arm/proc-armv/locks.h @@ -27,7 +27,7 @@ " blmi " #fail \ : \ : "r" (ptr), "I" (1) \ - : "ip", "lr", "cc"); \ + : "ip", "lr", "cc", "memory"); \ }) #define __down_op_ret(ptr,fail) \ @@ -48,7 +48,7 @@ " mov %0, ip" \ : "=&r" (ret) \ : "r" (ptr), "I" (1) \ - : "ip", "lr", "cc"); \ + : "ip", "lr", "cc", "memory"); \ ret; \ }) @@ -94,7 +94,7 @@ " blne " #fail \ : \ : "r" (ptr), "I" (RW_LOCK_BIAS) \ - : "ip", "lr", "cc"); \ + : "ip", "lr", "cc", "memory"); \ }) #define __up_op_write(ptr,wake) \ @@ -112,7 +112,7 @@ " blcs " #wake \ : \ : "r" (ptr), "I" (RW_LOCK_BIAS) \ - : "ip", "lr", "cc"); \ + : "ip", "lr", "cc", "memory"); \ }) #define __down_op_read(ptr,fail) \ diff --git a/include/asm-arm/proc-armv/uaccess.h b/include/asm-arm/proc-armv/uaccess.h index fa765b32daf3..1162e2f9e047 100644 --- a/include/asm-arm/proc-armv/uaccess.h +++ b/include/asm-arm/proc-armv/uaccess.h @@ -37,7 +37,7 @@ static inline void set_fs (mm_segment_t fs) : "cc"); \ (flag == 0); }) -#define __put_user_asm_byte(x,addr,err) \ +#define __put_user_asm_byte(x,__pu_addr,err) \ __asm__ __volatile__( \ "1: strbt %1,[%2],#0\n" \ "2:\n" \ @@ -51,27 +51,26 @@ static inline void set_fs (mm_segment_t fs) " .long 1b, 3b\n" \ " .previous" \ : "=r" (err) \ - : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err)) + : "r" (x), "r" (__pu_addr), "i" (-EFAULT), "0" (err) \ + : "cc") #ifndef __ARMEB__ -#define __put_user_asm_half(x,addr,err) \ +#define __put_user_asm_half(x,__pu_addr,err) \ ({ \ unsigned long __temp = (unsigned long)(x); \ - unsigned long __ptr = (unsigned long)(addr); \ - __put_user_asm_byte(__temp, __ptr, err); \ - __put_user_asm_byte(__temp >> 8, __ptr + 1, err); \ + __put_user_asm_byte(__temp, __pu_addr, err); \ + __put_user_asm_byte(__temp >> 8, __pu_addr + 1, err); \ }) #else -#define __put_user_asm_half(x,addr,err) \ +#define __put_user_asm_half(x,__pu_addr,err) \ ({ \ unsigned long __temp = (unsigned long)(x); \ - unsigned long __ptr = (unsigned long)(addr); \ - __put_user_asm_byte(__temp >> 8, __ptr, err); \ - __put_user_asm_byte(__temp, __ptr + 1, err); \ + __put_user_asm_byte(__temp >> 8, __pu_addr, err); \ + __put_user_asm_byte(__temp, __pu_addr + 1, err); \ }) #endif -#define __put_user_asm_word(x,addr,err) \ +#define __put_user_asm_word(x,__pu_addr,err) \ __asm__ __volatile__( \ "1: strt %1,[%2],#0\n" \ "2:\n" \ @@ -85,7 +84,31 @@ static inline void set_fs (mm_segment_t fs) " .long 1b, 3b\n" \ " .previous" \ : "=r" (err) \ - : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err)) + : "r" (x), "r" (__pu_addr), "i" (-EFAULT), "0" (err)) + +#define __put_user_asm_dword(x,__pu_addr,err) \ +({ \ + unsigned long long __temp = (unsigned long long)x; \ + __asm__ __volatile__( \ + "1: strt %1, [%2], #0\n" \ + "2: strt %3, [%4], #0\n" \ + "3:\n" \ + " .section .fixup,\"ax\"\n" \ + " .align 2\n" \ + "4: mov %0, %5\n" \ + " b 3b\n" \ + " .previous\n" \ + " .section __ex_table,\"a\"\n" \ + " .align 3\n" \ + " .long 1b, 4b\n" \ + " .long 2b, 4b\n" \ + " .previous" \ + : "=r" (err) \ + : "r" (__temp), "r" (__pu_addr), \ + "r" (__temp >> 32), "r" (__pu_addr + 4), \ + "i" (-EFAULT), "0" (err) \ + : "cc"); \ +}) #define __get_user_asm_byte(x,addr,err) \ __asm__ __volatile__( \ diff --git a/include/asm-arm/semaphore.h b/include/asm-arm/semaphore.h index fb73d9752319..34412c203747 100644 --- a/include/asm-arm/semaphore.h +++ b/include/asm-arm/semaphore.h @@ -22,19 +22,18 @@ struct semaphore { }; #if WAITQUEUE_DEBUG -# define __SEM_DEBUG_INIT(name) \ - , (long)&(name).__magic +# define __SEM_DEBUG_INIT(name) .__magic = (long)&(name).__magic #else # define __SEM_DEBUG_INIT(name) #endif -#define __SEMAPHORE_INIT(name,count) \ - { ATOMIC_INIT(count), 0, \ - __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \ - __SEM_DEBUG_INIT(name) } +#define __SEMAPHORE_INIT(name,cnt) { \ + .count = ATOMIC_INIT(cnt), \ + .wait = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait), \ + __SEM_DEBUG_INIT(name) \ +} -#define __MUTEX_INITIALIZER(name) \ - __SEMAPHORE_INIT(name,1) +#define __MUTEX_INITIALIZER(name) __SEMAPHORE_INIT(name,1) #define __DECLARE_SEMAPHORE_GENERIC(name,count) \ struct semaphore name = __SEMAPHORE_INIT(name,count) @@ -62,6 +61,11 @@ static inline void init_MUTEX_LOCKED(struct semaphore *sem) sema_init(sem, 0); } +static inline int sema_count(struct semaphore *sem) +{ + return atomic_read(&sem->count); +} + /* * special register calling convention */ diff --git a/include/asm-arm/thread_info.h b/include/asm-arm/thread_info.h index 1991b807b3ce..8ca864104452 100644 --- a/include/asm-arm/thread_info.h +++ b/include/asm-arm/thread_info.h @@ -51,17 +51,21 @@ struct thread_info { __u32 cpu; /* cpu */ __u32 cpu_domain; /* cpu domain */ struct cpu_context_save cpu_context; /* cpu context */ + struct restart_block restart_block; union fp_state fpstate; }; -#define INIT_THREAD_INFO(tsk) \ -{ \ - task: &tsk, \ - exec_domain: &default_exec_domain, \ - flags: 0, \ - preempt_count: 0, \ - addr_limit: KERNEL_DS, \ - INIT_EXTRA_THREAD_INFO, \ +#define INIT_THREAD_INFO(tsk) \ +{ \ + .task = &tsk, \ + .exec_domain = &default_exec_domain, \ + .flags = 0, \ + .preempt_count = 1, \ + .addr_limit = KERNEL_DS, \ + .restart_block = { \ + .fn = do_no_restart_syscall, \ + }, \ + INIT_EXTRA_THREAD_INFO, \ } #define init_thread_info (init_thread_union.thread_info) diff --git a/include/asm-arm/uaccess.h b/include/asm-arm/uaccess.h index bc6853b22177..d21892660de0 100644 --- a/include/asm-arm/uaccess.h +++ b/include/asm-arm/uaccess.h @@ -81,7 +81,7 @@ extern int __get_user_bad(void); const register typeof(*(p)) *__p asm("r0") = (p); \ register typeof(*(p)) __r1 asm("r1"); \ register int __e asm("r0"); \ - switch (sizeof(*(p))) { \ + switch (sizeof(*(__p))) { \ case 1: \ __get_user_x(__r1, __p, __e, 1, "lr"); \ break; \ @@ -120,7 +120,7 @@ extern int __put_user_bad(void); const register typeof(*(p)) __r1 asm("r1") = (x); \ const register typeof(*(p)) *__p asm("r0") = (p); \ register int __e asm("r0"); \ - switch (sizeof(*(p))) { \ + switch (sizeof(*(__p))) { \ case 1: \ __put_user_x(__r1, __p, __e, 1, "r2", "lr"); \ break; \ @@ -256,14 +256,15 @@ static inline long strnlen_user(const char *s, long n) #define __put_user_nocheck(x,ptr,size) \ ({ \ long __pu_err = 0; \ - __typeof__(*(ptr)) *__pu_addr = (ptr); \ + unsigned long __pu_addr = (unsigned long)(ptr); \ __put_user_size((x),__pu_addr,(size),__pu_err); \ __pu_err; \ }) #define __put_user_nocheck_error(x,ptr,size,err) \ ({ \ - __put_user_size((x),(ptr),(size),err); \ + unsigned long __pu_addr = (unsigned long)(ptr); \ + __put_user_size((x),__pu_addr,(size),err); \ (void) 0; \ }) @@ -273,6 +274,7 @@ do { \ case 1: __get_user_asm_byte(x,ptr,retval); break; \ case 2: __get_user_asm_half(x,ptr,retval); break; \ case 4: __get_user_asm_word(x,ptr,retval); break; \ + case 8: __get_user_asm_dword(x,ptr,retval); break; \ default: (x) = __get_user_bad(); \ } \ } while (0) @@ -283,6 +285,7 @@ do { \ case 1: __put_user_asm_byte(x,ptr,retval); break; \ case 2: __put_user_asm_half(x,ptr,retval); break; \ case 4: __put_user_asm_word(x,ptr,retval); break; \ + case 8: __put_user_asm_dword(x,ptr,retval); break; \ default: __put_user_bad(); \ } \ } while (0) diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index d61495103715..a5dc6bb96720 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h @@ -25,6 +25,7 @@ * This file contains the system call numbers. */ +#define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0) #define __NR_exit (__NR_SYSCALL_BASE+ 1) #define __NR_fork (__NR_SYSCALL_BASE+ 2) #define __NR_read (__NR_SYSCALL_BASE+ 3) diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h index f7ad699487b4..73f4067e3995 100644 --- a/include/asm-i386/elf.h +++ b/include/asm-i386/elf.h @@ -8,6 +8,7 @@ #include <asm/ptrace.h> #include <asm/user.h> #include <asm/processor.h> +#include <asm/system.h> /* for savesegment */ #include <linux/utsname.h> @@ -58,11 +59,6 @@ typedef struct user_fxsr_struct elf_fpxregset_t; #define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2) -/* Wow, the "main" arch needs arch dependent functions too.. :) */ - -#define savesegment(seg,value) \ - asm volatile("movl %%" #seg ",%0":"=m" (*(int *)&(value))) - /* regs is struct pt_regs, pr_reg is elf_gregset_t (which is now struct_user_regs, they are different) */ diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h index e085e51e9d25..bdc4da98612c 100644 --- a/include/asm-i386/system.h +++ b/include/asm-i386/system.h @@ -95,6 +95,12 @@ static inline unsigned long _get_base(char * addr) : :"m" (*(unsigned int *)&(value))) /* + * Save a segment register away + */ +#define savesegment(seg, value) \ + asm volatile("movl %%" #seg ",%0":"=m" (*(int *)&(value))) + +/* * Clear and set 'TS' bit respectively */ #define clts() __asm__ __volatile__ ("clts") diff --git a/include/asm-ppc/module.h b/include/asm-ppc/module.h index 9686cfa4fc36..01ed28a9f30e 100644 --- a/include/asm-ppc/module.h +++ b/include/asm-ppc/module.h @@ -28,7 +28,7 @@ struct mod_arch_specific /* Make empty sections for module_frob_arch_sections to expand. */ #ifdef MODULE -asm(".section .plt,\"aws\",@nobits; .align 3; .previous"); -asm(".section .plt.init,\"aws\",@nobits; .align 3; .previous"); +asm(".section .plt,\"ax\",@nobits; .align 3; .previous"); +asm(".section .init.plt,\"ax\",@nobits; .align 3; .previous"); #endif #endif /* _ASM_PPC_MODULE_H */ diff --git a/include/asm-ppc64/compat.h b/include/asm-ppc64/compat.h index a397383110cd..8ad44c0e53d4 100644 --- a/include/asm-ppc64/compat.h +++ b/include/asm-ppc64/compat.h @@ -5,9 +5,25 @@ */ #include <linux/types.h> +#define COMPAT_USER_HZ 100 + typedef u32 compat_size_t; typedef s32 compat_ssize_t; typedef s32 compat_time_t; +typedef s32 compat_clock_t; +typedef s32 compat_pid_t; +typedef u32 compat_uid_t; +typedef u32 compat_gid_t; +typedef u32 compat_mode_t; +typedef u32 compat_ino_t; +typedef u32 compat_dev_t; +typedef s32 compat_off_t; +typedef s64 compat_loff_t; +typedef s16 compat_nlink_t; +typedef u16 compat_ipc_pid_t; +typedef s32 compat_daddr_t; +typedef u32 compat_caddr_t; +typedef __kernel_fsid_t compat_fsid_t; struct compat_timespec { compat_time_t tv_sec; @@ -19,4 +35,24 @@ struct compat_timeval { s32 tv_usec; }; +struct compat_stat { + compat_dev_t st_dev; + compat_ino_t st_ino; + compat_mode_t st_mode; + compat_nlink_t st_nlink; + compat_uid_t st_uid; + compat_gid_t st_gid; + compat_dev_t st_rdev; + compat_off_t st_size; + compat_off_t st_blksize; + compat_off_t st_blocks; + compat_time_t st_atime; + u32 __unused1; + compat_time_t st_mtime; + u32 __unused2; + compat_time_t st_ctime; + u32 __unused3; + u32 __unused4[2]; +}; + #endif /* _ASM_PPC64_COMPAT_H */ diff --git a/include/asm-ppc64/page.h b/include/asm-ppc64/page.h index 7eb130cd1ab8..feabff500b6c 100644 --- a/include/asm-ppc64/page.h +++ b/include/asm-ppc64/page.h @@ -48,7 +48,7 @@ static __inline__ void clear_page(void *addr) lines = naca->dCacheL1LinesPerPage; __asm__ __volatile__( -" mtctr %1\n\ + "mtctr %1 # clear_page\n\ 1: dcbz 0,%0\n\ add %0,%0,%3\n\ bdnz+ 1b" diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h index 80d3977cf73f..3b13d9cd1fd8 100644 --- a/include/asm-ppc64/pgtable.h +++ b/include/asm-ppc64/pgtable.h @@ -267,8 +267,8 @@ static inline unsigned long pte_update( pte_t *p, unsigned long clr, { unsigned long old, tmp; - __asm__ __volatile__("\n\ -1: ldarx %0,0,%3 \n\ + __asm__ __volatile__( + "1: ldarx %0,0,%3 # pte_update\n\ andc %1,%0,%4 \n\ or %1,%1,%5 \n\ stdcx. %1,0,%3 \n\ diff --git a/include/asm-ppc64/ppc32.h b/include/asm-ppc64/ppc32.h index 1b39c4908205..5b7a8dc91bda 100644 --- a/include/asm-ppc64/ppc32.h +++ b/include/asm-ppc64/ppc32.h @@ -14,11 +14,6 @@ * 2 of the License, or (at your option) any later version. */ -#ifndef __KERNEL_STRICT_NAMES -#include <linux/types.h> -typedef __kernel_fsid_t __kernel_fsid_t32; -#endif - /* Use this to get at 32-bit user passed pointers. */ /* Things to consider: the low-level assembly stub does srl x, 0, x for first four arguments, so if you have @@ -44,21 +39,6 @@ typedef __kernel_fsid_t __kernel_fsid_t32; }) /* These are here to support 32-bit syscalls on a 64-bit kernel. */ -typedef int __kernel_ptrdiff_t32; -typedef int __kernel_clock_t32; -typedef int __kernel_pid_t32; -typedef unsigned short __kernel_ipc_pid_t32; -typedef unsigned int __kernel_uid_t32; -typedef unsigned int __kernel_gid_t32; -typedef unsigned int __kernel_dev_t32; -typedef unsigned int __kernel_ino_t32; -typedef unsigned int __kernel_mode_t32; -typedef unsigned int __kernel_umode_t32; -typedef short __kernel_nlink_t32; -typedef int __kernel_daddr_t32; -typedef int __kernel_off_t32; -typedef unsigned int __kernel_caddr_t32; -typedef int __kernel_loff_t32; struct statfs32 { int f_type; @@ -68,7 +48,7 @@ struct statfs32 { int f_bavail; int f_files; int f_ffree; - __kernel_fsid_t32 f_fsid; + compat_fsid_t f_fsid; int f_namelen; /* SunOS ignores this field. */ int f_spare[6]; }; @@ -88,8 +68,8 @@ typedef struct siginfo32 { /* kill() */ struct { - __kernel_pid_t32 _pid; /* sender's pid */ - __kernel_uid_t32 _uid; /* sender's uid */ + compat_pid_t _pid; /* sender's pid */ + compat_uid_t _uid; /* sender's uid */ } _kill; /* POSIX.1b timers */ @@ -100,18 +80,18 @@ typedef struct siginfo32 { /* POSIX.1b signals */ struct { - __kernel_pid_t32 _pid; /* sender's pid */ - __kernel_uid_t32 _uid; /* sender's uid */ + compat_pid_t _pid; /* sender's pid */ + compat_uid_t _uid; /* sender's uid */ sigval_t32 _sigval; } _rt; /* SIGCHLD */ struct { - __kernel_pid_t32 _pid; /* which child */ - __kernel_uid_t32 _uid; /* sender's uid */ + compat_pid_t _pid; /* which child */ + compat_uid_t _uid; /* sender's uid */ int _status; /* exit code */ - __kernel_clock_t32 _utime; - __kernel_clock_t32 _stime; + compat_clock_t _utime; + compat_clock_t _stime; } _sigchld; /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ @@ -164,32 +144,12 @@ typedef struct sigaltstack_32 { struct flock32 { short l_type; short l_whence; - __kernel_off_t32 l_start; - __kernel_off_t32 l_len; - __kernel_pid_t32 l_pid; + compat_off_t l_start; + compat_off_t l_len; + compat_pid_t l_pid; short __unused; }; -struct stat32 { - __kernel_dev_t32 st_dev; /* 2 */ - __kernel_ino_t32 st_ino; /* 4 */ - __kernel_mode_t32 st_mode; /* 2 */ - short st_nlink; /* 2 */ - __kernel_uid_t32 st_uid; /* 2 */ - __kernel_gid_t32 st_gid; /* 2 */ - __kernel_dev_t32 st_rdev; /* 2 */ - __kernel_off_t32 st_size; /* 4 */ - __kernel_off_t32 st_blksize; /* 4 */ - __kernel_off_t32 st_blocks; /* 4 */ - compat_time_t st_atime; /* 4 */ - unsigned int __unused1; /* 4 */ - compat_time_t st_mtime; /* 4 */ - unsigned int __unused2; /* 4 */ - compat_time_t st_ctime; /* 4 */ - unsigned int __unused3; /* 4 */ - unsigned int __unused4[2]; /* 2*4 */ -}; - struct sigcontext32 { unsigned int _unused[4]; int signal; diff --git a/include/asm-ppc64/prom.h b/include/asm-ppc64/prom.h index dbe1889b3184..1af24acffb7e 100644 --- a/include/asm-ppc64/prom.h +++ b/include/asm-ppc64/prom.h @@ -155,12 +155,6 @@ struct prom_args { prom_arg_t *rets; /* Pointer to return values in args[16]. */ }; -typedef struct { - u32 printf; /* void (*printf)(char *, ...); */ - u32 memdump; /* void (*memdump)(unsigned char *, unsigned long); */ - u32 dummy; /* void (*dummy)(void); */ -} yaboot_debug_t; - struct prom_t { unsigned long entry; ihandle chosen; @@ -171,9 +165,6 @@ struct prom_t { unsigned long version; unsigned long encode_phys_size; struct bi_record *bi_recs; -#ifdef DEBUG_YABOOT - yaboot_debug_t *yaboot; -#endif }; extern struct prom_t prom; @@ -183,7 +174,7 @@ extern int boot_cpuid; /* Prototypes */ extern void abort(void); extern unsigned long prom_init(unsigned long, unsigned long, unsigned long, - unsigned long, unsigned long, yaboot_debug_t *); + unsigned long, unsigned long); extern void prom_print(const char *msg); extern void relocate_nodes(void); extern void finish_device_tree(void); diff --git a/include/asm-ppc64/smp.h b/include/asm-ppc64/smp.h index e5df63d903ed..0dd474425342 100644 --- a/include/asm-ppc64/smp.h +++ b/include/asm-ppc64/smp.h @@ -52,7 +52,7 @@ static inline int num_online_cpus(void) return nr; } -extern volatile unsigned long cpu_callin_map[NR_CPUS]; +extern volatile unsigned int cpu_callin_map[NR_CPUS]; #define smp_processor_id() (get_paca()->xPacaIndex) diff --git a/include/asm-ppc64/tlb.h b/include/asm-ppc64/tlb.h index b44c7a071892..2c0903092ffb 100644 --- a/include/asm-ppc64/tlb.h +++ b/include/asm-ppc64/tlb.h @@ -62,7 +62,7 @@ static inline void __tlb_remove_tlb_entry(mmu_gather_t *tlb, pte_t *ptep, if (i == PPC64_TLB_BATCH_NR) { int local = 0; - if (tlb->mm->cpu_vm_mask == (1 << cpu)) + if (tlb->mm->cpu_vm_mask == (1UL << cpu)) local = 1; flush_hash_range(tlb->mm->context, i, local); @@ -80,7 +80,7 @@ static inline void tlb_flush(struct free_pte_ctx *tlb) struct ppc64_tlb_batch *batch = &ppc64_tlb_batch[cpu]; int local = 0; - if (tlb->mm->cpu_vm_mask == (1 << smp_processor_id())) + if (tlb->mm->cpu_vm_mask == (1UL << smp_processor_id())) local = 1; flush_hash_range(tlb->mm->context, batch->index, local); diff --git a/include/asm-ppc64/topology.h b/include/asm-ppc64/topology.h index d70184399d76..66e2546216c7 100644 --- a/include/asm-ppc64/topology.h +++ b/include/asm-ppc64/topology.h @@ -41,7 +41,7 @@ static inline unsigned long __node_to_cpu_mask(int node) for(cpu = 0; cpu < NR_CPUS; cpu++) if (numa_cpu_lookup_table[cpu] == node) - mask |= 1 << cpu; + mask |= 1UL << cpu; return mask; } diff --git a/arch/ppc64/kernel/xics.h b/include/asm-ppc64/xics.h index 7db4efb6b808..8db0fc4445ee 100644 --- a/arch/ppc64/kernel/xics.h +++ b/include/asm-ppc64/xics.h @@ -1,5 +1,5 @@ /* - * arch/ppc/kernel/xics.h + * arch/ppc64/kernel/xics.h * * Copyright 2000 IBM Corporation. * @@ -9,14 +9,10 @@ * 2 of the License, or (at your option) any later version. */ -#ifndef _PPC_KERNEL_XICS_H -#define _PPC_KERNEL_XICS_H - -extern struct hw_interrupt_type xics_pic; -extern struct hw_interrupt_type xics_8259_pic; +#ifndef _PPC64_KERNEL_XICS_H +#define _PPC64_KERNEL_XICS_H void xics_init_IRQ(void); int xics_get_irq(struct pt_regs *); -void xics_isa_init(void); -#endif /* _PPC_KERNEL_XICS_H */ +#endif /* _PPC64_KERNEL_XICS_H */ diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h index e6fa886e8d82..90890f4e9e6d 100644 --- a/include/linux/agp_backend.h +++ b/include/linux/agp_backend.h @@ -60,8 +60,10 @@ enum chipset_type { VIA_APOLLO_KX133, VIA_APOLLO_KT133, VIA_APOLLO_KT400, + VIA_APOLLO_KT400_3, VIA_APOLLO_PRO_266, VIA_VT8605, + VIA_P4X400, SIS_GENERIC, AMD_GENERIC, AMD_IRONGATE, diff --git a/include/linux/compat.h b/include/linux/compat.h index 62daefb17672..3f634baef539 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -9,9 +9,11 @@ #ifdef CONFIG_COMPAT #include <linux/stat.h> +#include <linux/param.h> /* for HZ */ #include <asm/compat.h> -#define compat_jiffies_to_clock_t(x) ((x) / (HZ / COMPAT_USER_HZ)) +#define compat_jiffies_to_clock_t(x) \ + (((unsigned long)(x) * COMPAT_USER_HZ) / HZ) struct compat_utimbuf { compat_time_t actime; diff --git a/include/linux/fb.h b/include/linux/fb.h index 128e310b9f5d..8a4734f94463 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -425,6 +425,7 @@ struct fb_info { #define fb_readb __raw_readb #define fb_readw __raw_readw #define fb_readl __raw_readl +#define fb_readq __raw_readq #define fb_writeb __raw_writeb #define fb_writew __raw_writew #define fb_writel __raw_writel diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f9945ae00d7a..89874d8eeee7 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -1092,6 +1092,7 @@ #define PCI_DEVICE_ID_VIA_8233C_0 0x3109 #define PCI_DEVICE_ID_VIA_8361 0x3112 #define PCI_DEVICE_ID_VIA_8233A 0x3147 +#define PCI_DEVICE_ID_VIA_8235_0 0x3168 #define PCI_DEVICE_ID_VIA_8235 0x3177 #define PCI_DEVICE_ID_VIA_8377_0 0x3189 #define PCI_DEVICE_ID_VIA_86C100A 0x6100 diff --git a/include/video/tgafb.h b/include/video/tgafb.h index 0e76dda6fc4d..23a1808045b2 100644 --- a/include/video/tgafb.h +++ b/include/video/tgafb.h @@ -47,6 +47,7 @@ #define TGA_VALID_REG 0x0070 #define TGA_CURSOR_XY_REG 0x0074 #define TGA_INTR_STAT_REG 0x007c +#define TGA_DATA_REG 0x0080 #define TGA_RAMDAC_SETUP_REG 0x00c0 #define TGA_BLOCK_COLOR0_REG 0x0140 #define TGA_BLOCK_COLOR1_REG 0x0144 diff --git a/init/Kconfig b/init/Kconfig index 1597113085a8..962d16696ef9 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -37,22 +37,6 @@ endmenu menu "General setup" -config NET - bool "Networking support" - ---help--- - Unless you really know what you are doing, you should say Y here. - The reason is that some programs need kernel networking support even - when running on a stand-alone machine that isn't connected to any - other computer. If you are upgrading from an older kernel, you - should consider updating your networking tools too because changes - in the kernel and the tools often go hand in hand. The tools are - contained in the package net-tools, the location and version number - of which are given in <file:Documentation/Changes>. - - For a general introduction to Linux networking, it is highly - recommended to read the NET-HOWTO, available from - <http://www.linuxdoc.org/docs.html#howto>. - config SYSVIPC bool "System V IPC" ---help--- diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index b2d21f78e229..84853545d7a4 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -32,6 +32,7 @@ const char *kallsyms_lookup(unsigned long addr, BUG(); namebuf[127] = 0; + namebuf[0] = 0; if (addr >= (unsigned long)_stext && addr <= (unsigned long)_etext) { unsigned long symbol_end; @@ -46,10 +47,10 @@ const char *kallsyms_lookup(unsigned long addr, /* Grab name */ for (i = 0; i < best; i++) { - ++name; - strncpy(namebuf + name[-1], name, 127); - name += strlen(name)+1; - } + unsigned prefix = *name++; + strncpy(namebuf + prefix, name, 127 - prefix); + name += strlen(name) + 1; + } /* Base symbol size on next symbol. */ if (best + 1 < kallsyms_num_syms) diff --git a/kernel/module.c b/kernel/module.c index 680deb635e30..ff961f21135f 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -880,7 +880,7 @@ static long get_offset(unsigned long *size, Elf_Shdr *sechdr) /* Lay out the SHF_ALLOC sections in a way not dissimilar to how ld might -- code, read-only data, read-write data, small data. Tally - sizes, and place the offsets into sh_link fields: high bit means it + sizes, and place the offsets into sh_entsize fields: high bit means it belongs in init. */ static void layout_sections(struct module *mod, const Elf_Ehdr *hdr, @@ -896,7 +896,7 @@ static void layout_sections(struct module *mod, unsigned int m, i; for (i = 0; i < hdr->e_shnum; i++) - sechdrs[i].sh_link = ~0UL; + sechdrs[i].sh_entsize = ~0UL; DEBUGP("Core section allocation order:\n"); for (m = 0; m < ARRAY_SIZE(masks); ++m) { @@ -905,10 +905,10 @@ static void layout_sections(struct module *mod, if ((s->sh_flags & masks[m][0]) != masks[m][0] || (s->sh_flags & masks[m][1]) - || s->sh_link != ~0UL + || s->sh_entsize != ~0UL || strstr(secstrings + s->sh_name, ".init")) continue; - s->sh_link = get_offset(&mod->core_size, s); + s->sh_entsize = get_offset(&mod->core_size, s); DEBUGP("\t%s\n", name); } } @@ -920,11 +920,11 @@ static void layout_sections(struct module *mod, if ((s->sh_flags & masks[m][0]) != masks[m][0] || (s->sh_flags & masks[m][1]) - || s->sh_link != ~0UL + || s->sh_entsize != ~0UL || !strstr(secstrings + s->sh_name, ".init")) continue; - s->sh_link = (get_offset(&mod->init_size, s) - | INIT_OFFSET_MASK); + s->sh_entsize = (get_offset(&mod->init_size, s) + | INIT_OFFSET_MASK); DEBUGP("\t%s\n", name); } } @@ -1066,7 +1066,7 @@ static struct module *load_module(void *umod, if (err < 0) goto free_mod; - /* Determine total sizes, and put offsets in sh_link. For now + /* Determine total sizes, and put offsets in sh_entsize. For now this is done generically; there doesn't appear to be any special cases for the architectures. */ layout_sections(mod, hdr, sechdrs, secstrings); @@ -1095,11 +1095,11 @@ static struct module *load_module(void *umod, if (!(sechdrs[i].sh_flags & SHF_ALLOC)) continue; - if (sechdrs[i].sh_link & INIT_OFFSET_MASK) + if (sechdrs[i].sh_entsize & INIT_OFFSET_MASK) dest = mod->module_init - + (sechdrs[i].sh_link & ~INIT_OFFSET_MASK); + + (sechdrs[i].sh_entsize & ~INIT_OFFSET_MASK); else - dest = mod->module_core + sechdrs[i].sh_link; + dest = mod->module_core + sechdrs[i].sh_entsize; if (sechdrs[i].sh_type != SHT_NOBITS) memcpy(dest, (void *)sechdrs[i].sh_addr, diff --git a/net/Kconfig b/net/Kconfig index fade78906088..a33b80a90c2f 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -2,6 +2,24 @@ # Network configuration # +menu "Networking support" + +config NET + bool "Networking support" + ---help--- + Unless you really know what you are doing, you should say Y here. + The reason is that some programs need kernel networking support even + when running on a stand-alone machine that isn't connected to any + other computer. If you are upgrading from an older kernel, you + should consider updating your networking tools too because changes + in the kernel and the tools often go hand in hand. The tools are + contained in the package net-tools, the location and version number + of which are given in <file:Documentation/Changes>. + + For a general introduction to Linux networking, it is highly + recommended to read the NET-HOWTO, available from + <http://www.linuxdoc.org/docs.html#howto>. + menu "Networking options" depends on NET @@ -652,3 +670,6 @@ endmenu endmenu +source "drivers/net/Kconfig" + +endmenu diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index bb0f57dc1cd4..317975123b18 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -144,7 +144,7 @@ write_src(void) for (k = 0; table[i].sym[k] && table[i].sym[k] == prev[k]; ++k) ; - printf("\t.asciz\t\"\\x%02x%s\"\n", k, table[i].sym + k); + printf("\t.byte 0x%02x ; .asciz\t\"%s\"\n", k, table[i].sym + k); last_addr = table[i].addr; prev = table[i].sym; } |
